アプリ版:「スタンプのみでお礼する」機能のリリースについて

Windows でUTF8 日本語を処理できる sed は未だ存在しないのでしょうか?

SJIS の日本語文章は正しく動作しますが、unicode のファイルの日本語処理は動作しません。
utf8 の入力ファイル、スクリプトファイル(.sed)を使用すると正しく動きません。
処理可能な sed はありますか?

例えば: 
in.txt の内容 = 日本語,
script.sed 内容= s/日本語/jjjj/
の uft8 ファイル、とし、
sed -f script.sed in.txt > ot.txt
を実行 →エラー発生。
no such command as ・ソs/譌・譛ャ隱・jjjj/
と文字化け?。・ソ、ってゴミ?。 (日本語なしの script でも同一)
script.sed をSJIS とすると、エラーは出ないが、ot.txt は空。
(色々の sed で確認しましたが、onigsed での --ctype=utf8 指定も駄目でした。)

A 回答 (1件)

in.txt,script.sedを書くのに、どんなエディタを使いましたか?


おそらくは、BOMの問題です。
「BOM無し」とか「UTF-8N」とか(「UTF-8(BOM有り)」に対しての)「UTF-8」とかのエンコードが選べるテキストエディタを使ってみてください。

http://ja.wikipedia.org/wiki/%E3%83%90%E3%82%A4% …

この回答への補足

さらに、補足しておきます。
debug script.sed でバイナリダンプを取り内容確認したら、
EF BB BF の頭が s/ の前についていた。
http://www.atmarkit.co.jp/fwin2k/win2ktips/775he …
ファイルの内容をバイナリ・ダンプで確認する。(d コマンドと、q コマンド使用)
------------------

尚、BOM 削除は、次の、onigsed (2009 年版)の 16進コード指定の置換で可能だった。
onigsed "s/\xef\xbb\xbf//" script.sed > no_bom.sed  (1)
(onigsed "s/^\xef\xbb\xbf//" script.sed > no_bom.sed も可)
------------------

Onigsed の場合、in.txt が UTF8 の場合、--ctype=UTF8 指定が必須だった。
--ctype=UTF8 指定をしないと、エラーなしの空振りだった。
Logos sed の方が --ctype=UTF8 指定など不要なので操作性は良い。
(入力 file と .sed file の encode を同じ色にしておけばいいだけ)
----------------

尚、Logos sed では、小なり記号 <、大なり記号 >、を指定した操作(ex. html ファイルの
tag 指定の操作等)は、.sed script file を使用しないと出来ない。なぜなら <, >
記号は リダイレクション記号の予約記号だから。

補足日時:2013/12/11 09:32
    • good
    • 0
この回答へのお礼

有難うございます。当たりでした。Bom 無し script.sed に変更したら、正常動作しました。

ご参考(復習):
sed は、Logos sed (ミドリノセロー氏、1991年版 ---古い!)使用
script.sed は MS メモ帳で作成(保存時の文字コード(E):UFT-8)
です。
まず、下記 UTF-8(BOMなし)で保存出来るエディター
http://msweb.moo.jp/tool/223/
で紹介されている online editor - Multilingual Editor
http://multilingual-editor.sugutsukaeru.jp/ja/
にかまして、BOM 無しの script_nobom.sed 入手。

sed -f script_nobom.sed in.txt > ot.txt
cannot open command-file script_nobom.sed
だって。8.3制限 に抵触(ボロ)。--- 名前を8文字以内に変えて、リトライ。
sed -f script_n.sed in.txt > ot.txt
→成功。 ot.txt も  jjjj
に変わっていた。 ------ 感謝・感謝。

本当に有難う。でも、この辺のこと余り世の中に書いてありませんね。良くない、ですネ。
onigsed って一体何なの。必要ないのでは??。そもそも何言ってんだか分からない文章で、ちょっと遺憾。

お礼日時:2013/12/10 14:30

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!