9

テキストファイルを操作して、テキストから非ASCII文字を削除しようとしています。行を削除したくありません。問題のある文字だけを削除したい。次の式を機能させようとしています。

sed '/[\x80-\xFF]/d'

4

1 に答える 1

43

提案された解決策は、特定のバージョンのsed、たとえばGNUsed4.2.1では失敗する可能性があります。

使用tr

tr -cd '[:print:]' < yourfile.txt

これにより、にない文字がすべて削除され[\x20-\x7e]ます。

たとえば改行を保持したい場合は、次を追加するだけ\nです。

tr -cd '[:print:]\n' < yourfile.txt

本当にすべてのASCII文字(制御コードも含む)を保持したい場合:

tr -cd '[:print:][:cntrl:]' < yourfile.txt

これにより、にない文字がすべて削除され[\x00-\x7f]ます。

于 2013-02-23T00:30:21.407 に答える