• ベストアンサー
  • 暇なときにでも

sed の結果が異なる

sedを使って先頭が'-'の行を消したいのですが、以下の始めのファイルtestでは消せるのですが、books.xmlの方では消せないので困っています。 よろしくお願いします。 $ cat test aaa - -aaa - b-b bb- $ sed '/^-.*/d' test aaa b-b bb- $ cat books.xml <book isbn="1-2345-6789-0"> <title>The book A0</title> <author>Mr.A0</author> </book> - <book isbn="1-2345-6789-1"> <title>The book A1</title> <author>Mr.A1</author> </book> - <book isbn="1-2345-6789-2"> <title>The book A2</title> <author>Mr.A2</author> </book> - $ sed '/^-.*/d' books.xml <book isbn="1-2345-6789-0"> <title>The book A0</title> <author>Mr.A0</author> </book> - <book isbn="1-2345-6789-1"> <title>The book A1</title> <author>Mr.A1</author> </book> - <book isbn="1-2345-6789-2"> <title>The book A2</title> <author>Mr.A2</author> </book> -

共感・応援の気持ちを伝えよう!

  • 回答数2
  • 閲覧数49
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
  • 回答No.2
  • sholmes
  • ベストアンサー率81% (89/109)

こちらに記載されている文字を見る限り、books.html側の「-」は全角文字に思われます。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

本件は、エディタやターミナル上で、全角英数のマイナス'-'が、半角英数のマイナスに見えているものであることが分かりました。 なので、こちらのサイトにペーストすると、本来の全角英数の姿になりました。 勉強になりました。ありがとうございました。

質問者からの補足

仰る通りです。 どこでミスをしたのか分からないのですが、本来の質問ファイルの中身は、以下の通りです。 <book isbn="1-2345-6789-0"> <title>The book A0</title> <author>Mr.A0</author> </book> - <book isbn="1-2345-6789-1"> <title>The book A1</title> <author>Mr.A1</author> </book> - <book isbn="1-2345-6789-2"> <title>The book A2</title> <author>Mr.A2</author> </book> - よろしくお願いします。

関連するQ&A

  • SEDの使い方

    こんにちは。 sedである複数行のパターンにマッチしたら置き換えるということをしたいのですが上手くいきません。 たとえば、 test.txt aaa bbb ccc に対して、 sed -i.bak s/aaa/aaa'\n'111/g test とすると、 test.txt aaa 111 bbb ccc となります。 これを戻す方法として、 sed -i.bak s/aaa'\n'111/aaa/g test としても、元に戻りません。 sedを用いで元に戻す方法をご教示いただけないでしょうか。 よろしくお願い致します。

  • sedで編集対象ファイルのコメント行を無視する

    sedで、いわゆるUNIXにありがちなconfファイルを編集しようとしています。 例えば、以下のようなtest.confファイルがあります。 # cat test.conf #### # test.conf file #### # parameter = xxx   parameter = aaa # set here   #parameter = bbb # set here このファイルの parameter を zzz に変更する場合に、 # sed "s/parameter =.*/parameter = zzz/" < test.conf > test.conf.new と実行すると、コメント行も含めて全て「parameter = zzz」と置き換わります。 そもそもコメントなので動作上問題はないのですが、confファイルのコメント行は sedで無視するようにするには、どのようにしたら良いでしょうか。 ちなみにコメントをあらわす"#"は、行の先頭や、空白、タブの後にあります。 また、正しいパラメータのうしろに説明としてコメントが入る場合もあります。 できればこの空白やタブ、コメントを前処理で削除などせず、見た目は同じまま、 コメントでない行のパラメータだけを入れ替えたいのです。 よろしくお願いします。

  • (大至急)JavaScriptの質問です

    xmlファイルを読み込んで 書籍1: Title:ハリーポッター ・ ・ 書籍2: Title:広辞苑 ・ ・ 書籍3: ・ ・ のように表示させるJavaScriptのプログラム(拡張子はhtml)を作りたいのですが、上手く行きません。大至急教えて頂けないでしょうか?!本当に困ってます・・・ ///////////作りかけのJavaScriptプログラム//////// <HTML> <script> xmldoc=new ActiveXObject("Microsoft.XMLDOM"); xmldoc.load("Books.xml"); var str=""; var i=0,j=0,imax=0; imax = xmldoc.documentElement.childNodes.length; var Titles = xmldoc.documentElement.getElementsByTagName("Title"); var Authors = xmldoc.documentElement.getElementsByTagName("Author"); var Prices = xmldoc.documentElement.getElementsByTagName("Price"); for(var i=0;i< imax;i++){ str=str+xmldoc.documentElement.childNodes.item(i).text+"<BR />"; document.writeln(str); } </script> <body> </body> </HTML> ///////////作りかけのJavaScriptプログラム//////// ////////////Books.xml////////////// <?xml version="1.0" encoding="SHIFT_JIS" ?> <?xml-stylesheet type="text/xsl" href="kadai3.xsl" ?> <Books> <Book> <Title>ハリーポッター</Title> <Author>j.kローリング</Author> <Price>3800</Price> </Book> <Book> <Title>広辞苑</Title> <Author>鈴木太郎</Author> <Price>6800</Price> </Book> <Book> <Title>魚の図鑑</Title> <Author>田中雅夫</Author> <Price>4500</Price> </Book> </Books> ////////////Books.xml//////////////

その他の回答 (1)

  • 回答No.1
  • Tacosan
  • ベストアンサー率23% (3656/15482)

いちおう確認ですが, book.xml の方にも「先頭が'-'の行」があるのですか? 実は違う文字だったりしませんか?

共感・感謝の気持ちを伝えよう!

質問者からのお礼

本件は、エディタやターミナル上で、全角英数のマイナス'-'が、半角英数のマイナスに見えているものであることが分かりました。 なので、こちらのサイトにペーストすると、本来の全角英数の姿になりました。 勉強になりました。ありがとうございました。

質問者からの補足

仰る通りです。 どこでミスをしたのか分からないのですが、本来の質問ファイルの中身は、以下の通りです。 <book isbn="1-2345-6789-0"> <title>The book A0</title> <author>Mr.A0</author> </book> - <book isbn="1-2345-6789-1"> <title>The book A1</title> <author>Mr.A1</author> </book> - <book isbn="1-2345-6789-2"> <title>The book A2</title> <author>Mr.A2</author> </book> - よろしくお願いします。

関連するQ&A

  • ActionScript3でのXML操作

    ActionScriptの初心者です。お世話になります。 既存のXMLにデータを追加していきたいのですがやり方がわかりません。データは以下のようなフォーマットです。 <books> <book> <title>...</title> <author priority="1">...</author> <!--■authorのpriorityを参照してこの辺に追加したりします--> <author priority="2">...</autor> <book> <books> Web上、adobeのリファレンスでいろいろ探したのですが、ほとんどXMLのデータを参照する方法しか紹介されていません。XMLのデータにタグを追加したり、削除したりする方法、またはWeb上のサンプル等何でもよいので、おしえていただけますでしょうか? または、XMLクラスを使わず行単位で正規表現で文字処理する方法でもかまいません。よろしくお願いします。m(_*_)m バージョン:AcrionScript3.0 (XMLDocumentなどのクラスを使わず、W3Cで定義されているXPathのようなアクセス方法、.とか、@とかでアクセスする方法です。)

    • ベストアンサー
    • Flash
  • VBScriptを用いたXMLのデータ抽出に関して

    下記のsample.xmlから sample.xml ---------------------------------------------- <?xml version="1.0" encoding="utf-8" ?> <books> <item> <title>XML入門-第1巻</title> <price>2500</price> <isbn>1-1234-5678-X</isbn> <authors> <author>西谷 亮</author> </authors> <imgfile>1-1234-5678-X.gif</imgfile> </item> <item> <title>XML入門-第2巻</title> <price>2200</price> <isbn>1-1234-5678-0</isbn> <authors> <author>西谷 亮</author> <author>山田 太郎</author> </authors> <imgfile>1-1234-5678-0.gif</imgfile> </item> <item> <title>XML入門-第3巻</title> <price>3600</price> <isbn>1-1234-5678-1</isbn> <authors> <author>西谷 亮</author> <author>鈴木 次郎</author> </authors> <imgfile>1-1234-5678-1.gif</imgfile> </item> </books> ---------------------------------------------- 下記のtitle.vbsを用いて、「<title>」タグに表記された 書物のタイトルだけを抜き出します。 title.vbs ---------------------------------------------- 01 : Dim objDOM, rtResult 02 : 03 : Set objDOM = WScript.CreateObject("MSXML2.DOMDocument") 04 : rtResult = objDOM.load("Sample.xml") 05 : If rtResult = True Then 06 : procDispDatas objDOM.childNodes 07 : End If 08 : Set objDOM = Nothing 09 : 10 : Sub procDispDatas(objNode) 11 : Dim obj 12 : For Each obj In objNode 13 : If obj.nodeType = 3 and obj.parentNode.nodeName = "title" Then 14 : MsgBox obj.parentNode.nodeName & " : " & obj.nodeValue 15 : End If 16 : If obj.hasChildNodes Then 17 : procDispDatas obj.childNodes 18 : End If 19 : Next 20 : End Sub ---------------------------------------------- 上記の記述ではサブプロシージャprocDispDatas(objNode) にて、<title>タグの要素の数だけMsgBoxでタイトル名の メッセージボックスが表示されるかと思います。 これをひとつのメッセージでまとめるて表示するはどのように 記述すればよいでしょうか。 下記のメッセージの表示が理想です。 メッセージ ---------------------------------------------- title:XML入門-第1巻 title:XML入門-第2巻 title:XML入門-第3巻 ---------------------------------------------- お手数をおかけしますが、ご存知の方 ご教授いただけませんでしょうか>< よろしくお願いいたします。

    • 締切済み
    • XML
  • sedを使って複数ファイルの先頭行を表示

    以下の様なファイルがあります。 各ファイルの先頭行をとりだしたいのですが、headコマンドを使うと ファイル名と結果が分かれて表示されます。 sedで、-nオプションの行番号指定で表示することができるので、 sed -n '1p' *.txt のワイルドカード指定でやったのですが、 この場合だと複数ファイルとみてくれなくて、すべてのファイルを ひとつにしてその先頭を表示しているみたいです。 できれば、各ファイル毎に、ファイル名と結果を1行にして表示したい のですが、どうすればよいでしょうか。 参照ファイル cat 1.txt 12345 67890 cat 2.txt abcde fghij cat 3.txt 11111 22222 headコマンドで実行 $ head -n 1 *.txt ==> 1.txt <== 12345 ==> 2.txt <== abcde ==> 3.txt <== 11111 sedで実行 $ sed -n '1p' *.txt 12345

  • XSLTの処理について

    いつもお世話になっております。 XMLの動作についての質問です。以下のようなXMLファイルがあったとします。それに対して、その下のようなXSLファイルがあり、変換させると、結果XMLができます。 そこでわからないのは、test.xslの中ほどで、<xsl:template match="book/title/price">という風にXPath式でbook/title/priceと指定しているのに、結果には<title>の値も出力されます。なぜでしょうか。 自分のイメージとしては、<title>の値は出力されず<price>の値だけが出力されるのじゃないのかなっていう感じです。さらに<newTag>に<title>の値が挟まれていないのもなぜなのかわかりません。 お分かりになる方よろしくお願いします。もし参考文献に良いサイトや本がありましたらそちらも紹介をお願いします。 <<<test.xml>>> <?xml version="1.0" encoding="Shift_JIS"?> <books>  <book>   <title>    XMLとは    <price>2000</price>   </title>  </book>  <book>   <title>    XML概論    <price>1800</price>   </title>  </book>  <book>   <title>    XMLマスター    <price>4000</price>   </title>  </book> </books> <<<test.xsl>>> <?xml version="1.0" encoding="Shift_JIS"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/">  <answer>   <xsl:apply-templates select="books/book"/>  </answer> </xsl:template> <xsl:template match="book/title/price">  <newTag>   <xsl:value-of select="."/>  </newTag> </xsl:template> </xsl:stylesheet> <<<結果.xml>>> <?xml version="1.0" encoding="utf-8" ?> <answer> XMLとは <newTag>2000</newTag> XML概論 <newTag>1800</newTag> XMLマスター <newTag>4000</newTag> </answer>

    • ベストアンサー
    • XML
  • 複数のxmlファイルの合体

    複数のxmlファイルの合体 XML、JavaScriptのど素人です。諸先輩方のアドバイスを乞いたくよろしくお願いいたします。 XML本のサンプルプログラムで、XML/XSL/JavaScript(html内に記述されている)を用いた 検索プログラムを以下の理由で改良したいと考えています。 <books> <book> <data1>データ</data1> <data2>データ</data2> <data3>データ</data3> </book> </books> の構造を持つxmlファイルがあったとして データの更新が頻繁に行われるのは<data3>要素だけなので、 <books> <book> <data1>データ</data1> <data2>データ</data2> </book> </books> -----xml1 <books> <book> <data3>データ</data3> </book> </books> -----xml2 のように2ファイルに分離し、 JavaScriptの検索プログラムで、<data1>~<data3>要素から条件にあったデータを抽出したいのですが どうすればいいのでしょうか?よろしくお願いします。

    • 締切済み
    • XML
  • JavaScriptを使うとXMLで実体参照されない

    htmlに書き込んだjsで、プルダウンメニュとテキストボックスに入力した検索語で、xmlから条件に合ったデータを抽出し、別のhtmlに書き出すという仕組みなんですが、下記のようにxmlデータに実体参照を使用すると、jsが動きません。なぜでしょうか? もちろん、実体参照の箇所を消去すると、作動します。 お分かりの方、ご教授くださいませ。よろしくお願いいたします。 ★検索エンジン部分(js) function disp(){ var strTitl=parent.up.form.title.value; var strAuthr=parent.up.form.author.value; var objDoc=new ActiveXObject("Msxml2.DOMDocument"); objDoc.async=false; objDoc.load("books.xml"); flg=false; strFlt="/books/book"; if(strTitl!=""){ strFlt+="[(title = '" + strTitl + "')"; flg=true; } if(strAuthr!=""){ if(flg){ strFlt+=" and "; }else{ strFlt+="["; flg=true; } strFlt+="(author ='" + strAuthr + "')"; } if(flg){strFlt+="]";} var clnNod=objDoc.selectNodes(strFlt); with(parent.down.document){ open("text/html"); writeln("<html><head><title></title></head><body>"); for(i=0;i<clnNod.length;i++){ objNod=clnNod.item(i); objTit=objNod.selectSingleNode("title"); objAut=objNod.selectSingleNode("author"); objPrc=objNod.selectSingleNode("price"); objId=objNod.selectSingleNode("@id"); writeln("<table border='1'><tr><td>"); writeln(objId.text + ".</td><td>"); writeln(objTit.text + "(" + objAut.text + ")" + "</td><td>"); writeln(objPrc.text + "円</td></tr></atble>"); } writeln("</body></html>"); close(); } } ★xmlデータ(books.xml) <?xml version="1.0" encoding="Shift_JIS" ?> <!DOCTYPE books[<!ENTITY y2000 "2千円">]> <books> <book id="001"><title>タイトルA</title><author>作者A</author><price>&y2000;</price></book> </books>

    • ベストアンサー
    • XML
  • 【sed】変数に設定したコマンドの実行について

    お世話になります。 一度変数に文字列として格納したsedコマンドの実行についての質問です。 以下、「実装1」のように、「あるファイルの最終行を除外して別のファイルに書き込む」という処理を行おうとしています。 ログ出力などの関係で、実行するコマンドを一度変数に格納する必要があるのですが 一度変数に格納して実行すると「実装2」のようにエラーが出てしまいます。 変数に格納したsedコマンドを実行するにはどのようにすればいいでしょうか? なお、シェルはbashです。 実行例ではターミナルから直接実行していますが、実際にはシェルスクリプトにして実行します。 以上、どなたかご教示頂けないでしょうか。 ■実装1 [root@localhost tmp]# cat /tmp/data aaa bbb ccc [root@localhost tmp]# sed -e '$d' /tmp/data >/tmp/data2 [root@localhost tmp]# cat /tmp/data2 aaa bbb [root@localhost tmp]# ■実装2 [root@localhost tmp]# CMD='sed -e $d /tmp/data >/tmp/data2' [root@localhost tmp]# echo $CMD sed -e $d /tmp/data >/tmp/data2 [root@localhost tmp]# $CMD aaa bbb sed: >/tmp/data2を読み込めません: そのようなファイルやディレクトリはありません [root@localhost tmp]#

  • sedコマンド 先頭に空白文字を含む行の挿入

    よろしくお願いします。 [やりたい事] linaxサーバで、行の先頭に空白を3個含む文字列aaaを、/tmp/abc.cnfの3行目に挿入したいですが下記[実施コマンド]ではうまくいかず、上手くいくコマンドラインを教えて下さい。 [実施コマンド] sed -e ”3i <space><space><space>aaa” /tmp/abc.cnf [/tmp/abc.cnf]の中身 △△△123 △△△456 △△△aaa ←コマンドで挿入したい △△△666 △△△777 よろしくお願いします

  • diffコマンド結果詳細内容について

    diffコマンド結果詳細内容について 以下、実行ログになります。 test_svrver33%cat aa 123 456 789 aaa bbb ccc ddd test_svrver34%cat bb 123 456 ccc ddd test_svrver35%diff aa bb 3,5d2 < 789 < aaa < bbb test_svrver36% diffコマンドの実行結果1行目の 3,5d2 について 詳しく知りたいのですが 3,5 については3行目~5行目だと わかったのですが、d2 についてどうしても調べきれなかったので ご教授よろしくお願い致します。

  • XSLでの表示方法について

    こんにちは。XLM初心者です。 大まかには理解できてきたのですが、どうしても分からない部分が あるのでご質問させてください。 <Books> <book name="code" value="45605277" /> <book name="title" value="昭和ホビー大辞典" /> <book name="page" value="421" /> <book name="category" value="hobby" /> </Books> 上記のようなXMLの「昭和ホビー大辞典」の部分のみをXSLを利用して 出力させたい場合、XSLにはどのように記述すればよいのでしょうか。 「昭和ホビー大辞典」を<title></title>などで使用したいと考えております。 分かりにくい質問で申し訳ございません。 どうぞ、よろしくお願い致します。

    • ベストアンサー
    • XML