xptree回答ポイント 300ptウォッチ 1

linux sedコマンドに関する質問です。

ディレクトリを再帰的に下りてファイル内の文字列を一括置換するために以下のコマンドがあります。
例:日本をJapanに置換する場合
find . -type f | xargs sed -i "s/日本/Japan/g"
これは正常に日本→Japanに置換できるのですが

ユーザをUserに置換する場合次のエラー文が表示されます。
sed: -e expression #1, char 17: unterminated `s' command
コマンドは以下です。
find . -type f | xargs sed -i "s/ユーザ/User/g"

ウォッチをWatchに置換する場合
find . -type f | xargs sed -i "s/ウォッチ/Watch/g"
以下のエラーが表示されます。
sh: -c: line 0: unexpected EOF while looking for matching ``'
sh: -c: line 1: syntax error: unexpected end of file

マルチバイトの文字によってエラーになるようです。
ユーザの場合は『ー』が原因のようです。
試しに以下のようにしてもエラーは解決されませんでした。
find . -type f | xargs sed -i "s/ユ.+ザ/User/g"

どうすれば全てのマルチバイトを正常に置換できますでしょうか?

ファイルの文字コードはSJISです。
解決に至った回答のみポイントを付与させていただきます。
宜しくお願い致します。

※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。
ログインして回答する

みんなの回答

この質問へのコメント

この質問への反応(ブックマークコメント)

質問の情報

登録日時
2013-03-18 17:17:28
終了日時
2013-03-25 17:20:04
回答条件
1人5回まで

この質問のカテゴリ

この質問に含まれるキーワード

Linux2257SJIS223SED40文字コード574再帰58ディレクトリ1525Char156Line1329JAPAN397sh230

人気の質問

メニュー

PC版