• ベストアンサー

sedで日本語の置換方法について

sedを使い文字の置換を行いたいのですが、日本語(全角文字)の置換がうまくいきません。 たとえば[a]から[i]に変換することはできるのですが、[あ]から[い]にはうまく変換できません。 どなたかわかる方、変換する方法はありますでしょうか?あればその方法を教えてください。よろしくお願いします。

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

  • ベストアンサー
  • tatsu99
  • ベストアンサー率52% (391/751)
回答No.4

#2です。 >回答してくださってありがとうございます。 >このコマンドを実行しても日本語の変換は行えませんでした。 こちらの環境では、変換できました。 D:\downloads\tools\sed_118d>type my.txt ありがとうございます abcdefg おおああ漢字 いいいい -----------以上は変更前のテキスト---- D:\downloads\tools\sed_118d>sed --ctype=sjis s/あ/い/g my.txt いりがとうございます abcdefg おおいい漢字 いいいい -------------上記が実行結果------- 確認ですが、 1.#2の参考URLのSEDを使用しましたか? 2.実際に打ち込んだコマンドは、どのようなコマンドですか。 3.変更前のテキストの漢字コードはシフトJISですね。 この漢字コードが、異なると変換出来るはずがありませんので、念のため為。 4.変更前のテキストが、もし、提示できるなら提示して下さい。 以上、補足して下さい。

hamusta-
質問者

お礼

この手順の通り確認してみたところ、テキストファイルが文字化けしていたためにうまくできなかったみたいです。 テキストファイルをshift-JISに直したらできました! ありがとうございました!

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (3)

  • MASA_H
  • ベストアンサー率42% (64/151)
回答No.3

いくらなんでも1.xは古すぎると思われるので参考URLのものを使うか、Cygwinのものを使うかしたらどうでしょうか。

参考URL:
http://www.kt.rim.or.jp/~kbk/sed/
hamusta-
質問者

お礼

早速参考URLのものを使ってやってみましたがやはり日本語の変換が出来ませんでした。

全文を見る
すると、全ての回答が全文表示されます。
  • tatsu99
  • ベストアンサー率52% (391/751)
回答No.2

参考URLのSEDを使用しているなら、漢字に対応しています。(SJIS,EUC) たぶん、SIJISだと思いますので、起動時に以下のオプションをセットして下さい。 --ctype=SJIS これで、変換できないでしょうか? 以上は、README.3RDに記述されています。

参考URL:
http://www.vector.co.jp/download/file/win95/util/fh028215.html
hamusta-
質問者

お礼

回答してくださってありがとうございます。 このコマンドを実行しても日本語の変換は行えませんでした。

全文を見る
すると、全ての回答が全文表示されます。
  • MASA_H
  • ベストアンサー率42% (64/151)
回答No.1

どのsedをどのOS上でどの文字コードの置換を実行したら出来なかったのですか? ちなみに"GNU sed 4.1.5"の場合、 $ echo $LANG ja_JP.UTF-8 $ echo "あいうえお"|sed 's/あ/い/' いいうえお と日本語も置換できます。

hamusta-
質問者

お礼

早速の回答ありがとうございます。情報不足ですみませんでした。 OSはWindowsXPを使用していまして、sedのバージョンは「GNU sed version 1.18」です。 できればWindowsでやりたいのですができますでしょうか?

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • sedでの置換がうまくできません。

    sedを使用して以下の様な文字列を置換したいと考えています。 iPar(\"w\") → 何かの文字列 そこで以下のようなsedスクリプトを作成しました。 s/iPar\(\"w\"\)/test/g  → a.sed 使用してみました。具体的には↓のコマンド >sed -f a.sed inputデータ >outputデータ しかし結果ファイルをみても何も変わってくれません。 なにが悪いのでしょうか? どなたかご指南下さい。

  • sedの置換文字に変数を使用したいのですが・・・

    あるファイルの特定の文字を変換し、上書きをする処理を行いたいのですが、sedの置換文字に変数が渡せなくて困っています。 例: X="a" Y="b" echo test.txt | sed 's/${X}/${Y/g}' >test.txt sedでは置換文字に${X}といった変数を使用することはできないのでしょうか?

  • Wordでの置換方法を教えてください。

    1.Word2003の文書中に、句読点の全角”.”と   節、項などの番号を示す全角 a. b. c.~などがあります。このうち読点の”.”だけを”。”に置換機能で変換したいのですが、そのやり方を教えてください。(やさしくお願いします) 2.そのほかに、置換したい文字が2個あります。都合3個を何かで区切るなどして並べて記述して1回で置換する方法はありませんか?

  • Unix-sedコマンドによる置換について

    sedでコマンド次の文字列をスペースに置換したいのですが うまくいきません。BF-DR1 =(0)A[7]OPN-ENDはスペースや大カッコが含まれています。 与えたコマンドは、 sed -e "s/ BF-DR1 =(0)A[7]OPN-END//g" <bf1Open.log>rrr.txt ですが、出力ファイルはまったく置換されていませんでした。 お分かりになる方どなたかご教授ください。

  • sambaで連携したファイルをLinuxからsedでの置換

    お世話になります。 sedを使って文字列の置換をしたいと考えています。 sambaでwindowsから連携したファイルに対して置換を行いたいのですが、うまく置換ができません。 Linux側の「GNOME端末」からファイルの中身をのぞくと、全角の箇所が文字化けしてしまっていました。どうやら原因はこれだと思うのですが、どうすれば文字化けしていてもうまく置換できるでしょうか? あるいはLinux側から見ても文字が化けないようにするにはどうすればよいでしょうか? 例)   test[Tab]2008年5月05日[Tab]あああ[Tab]aaaaa という文字列に対し、 sed -e 's/^.*\t.\(.*\)\t.*\t.*$/3\1/' test.txt というコマンドを実行したが、うまく置換されない。 ※test.txtは、文字列が格納されているファイル。 よろしくお願いいたします。

  • sed での置換

    sed で ・I love \underline{"New York"} very much. を ・I love "New York" very much. に変換するには、どう書けばよいでしょうか? s/\\underline{(.*)}/\1/g としてみましたがうまくいきません。。。

  • ワード (word ) 日本語の文字だけを選択して「置換」したい。

    http://oshiete1.goo.ne.jp/kotaeru.php3?q=1568156 で「半角を~」という質問をしました。 そして、「半角を置換すればいい。」という回答をいただきまして、非常に助かりました。 今度は日本語(つまり全角)の文字全てを置換する方法ってあるのでしょうか?? 「任意の全角」という選択肢がありませんでした・・・。 どなたか教えて下さい。

  • sedでカンマ区切りの列の置換を行いたい

    以下の様なファイルがあります。 sedコマンドを使用して、カンマで区切られたn番目のカラム目を 置換したい場合どうすればよいでしょうか。 "1","2","3","4","5","6" "1234","12","34567","abcd","efg","hi" "a c","d f","12 34","0","AAA","" "g i","j l","45 67","0","BBB","2021" "m o","p r","3 2 1","1","ABC","" "123","456","","abc","efg","hij" ①1カラム目以外置換(1カラム目以降削除) sed 's/\(.*\),.*,.*,.*,.*,.*/\1/g' test.csv ②最後の6カラム目以外置換(6カラム目以外削除) sed 's/.*,.*,.*,.*,.*,\(.*\)/\1/g' test.csv ③3カラム目を置換(3カラム目を「""」だけにしたい) sed -e 's/\(.*\),\(.*\),.*,\(.*\),\(.*\),\(.*\)/\1,\2,"",\3,\4,\5/g' test.csv とできたのですが、 表現がないというか、置換対象文字列の条件、表現が長いというか、全カラムを指定しているので、 少し、短くできないものでしょうか。 ①パターン sed 's/\([^,]*\),.*/\1/g' test.csv ②パターン sed "s/.*,\([^,]*\)$/\1/g" test.csv の様にできました。 ③パターン 思いう浮かばず これで、できているので間違いはないかとおもいますが、 どうなのでしょうか。 なにかいい案はないでしょうか?

  • linuxのsedコマンド変数置換の質問です

    はじめまして。 要点だけになってしまいますが 教えていただきたいことがあってトピしました。 この構文では動きませんが僕がやりたいことは こういうイメージです。 111.txt 444 444 1.txt 111 222 333 444 a=`cat 111` echo $a 結果 444 444 1.txt | sed 's/222/$a/g'          ↑ ↑     置換対象 変数 word を $a に収まっている文字列で置換します。 結果 111 444 444 333 444 どなたかわかるかた教えてください。 よろしくお願いします。

    • ベストアンサー
    • Perl
  • sed コマンドについて

    はじめまして 当方、初心者で勉強の身です。ご回答頂けたら幸いです。 linuxのシェルファイルが100以上あり、こちらの全ファイル内に含まれる文字列"ABCDE"を文字列"12345"に置換をしたいと思っています。 sed コマンドで sed -e "s/ABCDE/12345/g" *.csh のように実行しても、画面上に変換後が表示されるだけで その後、ファイルを見ても置換されていません。 どのようにすれば、全ファイルが修正されるのでしょうか。 以上です。回答の方をよろしくお願い致します。