sedを使用した文字の削除

sedを使用した文字の削除

Caucasian male lives in Arizona w/ fiancÃÂÃÂÃÂÃÂÃÂ私はAIX unixで作業しており、ファイルから印刷できない文字を削除しようとしています。 UTF-8エンコーディングを使用してNotepad ++で見ると、データがファイルにあるように見えます。 Unixでファイルを見ようとすると、特殊文字の代わりに^███^███^███^███^██^██というメッセージが表示されます。

この特殊文字をすべて空白に変更したいと思います。

sedを試しましたが、's/[^[:print:]]/ /g' file文字は削除されませんでした。実行すると、私のロケールは以下にリストされます。locale -a

C
POSIX
en_US.8859-15
en_US.ISO8859-1
en_US

試してみましたが、sed -e 's/[^ -~]/ /g' file文字は削除されませんでした。

私は動作するGNU sedロケールを使用する他のスタックフローの答えを見ましたが、UTF-8そのロケールはありません。

私もそれを使っていますksh

ベストアンサー1

現在のロケールがすでにUTF-8を文字セットとして使用し、ファイルがその文字セットを使用して作成されている場合:

<file LC_ALL=C sed 's/[^ -~]//g'

または、AIX sed に制御文字を含めるには、次のようにします。

<file LC_ALL=C sed "$(printf "s/[^[:print:]\t\r]//g")"

おすすめ記事