web-dev-qa-db-ja.com

sedで文字エンコードを読み取る

ファイル内のすべての特殊文字(é、ü、ãなど)をラテックス形式(\ 'e、\ "u、\ 〜aなど)に変換するbashスクリプトを作成しようとしています。通常、これは次のとおりです。 sedを使用すると非常に簡単ですが、sedで特殊文字を認識できません。isoまたはUTF-8エンコーディングを使用してファイルを読み取るようにコマンドに指示するにはどうすればよいですか。

それが不可能な場合、特殊文字を理解するためにsedを取得する方法はありますか?

1
Malabarba

それは同じくらい簡単にすることができます

iconv --from-code $enc input-file |
    sed 's/é/\\'\''e/;s/ü/\\"e/;s/ã/\\~a/' |
    iconv -to-code $enc >converted-input-file

ここで、変数encには、iconv -lから取得した文字列の1つである入力ファイルのエンコーディングが含まれています。

2
enzotib