^M
「無効な文字」(例:control-m文字または文字がまったくない文字)を含むレコードをフィルタリングしようとしています。
例:
12345 vimal 1235566 ^zfood nation
Unix vi モードで青色で表示されているここでは、レコードに無効な書式設定^z
されていない文字が含まれているかどうかを確認するスクリプトが必要です。
答え1
ファイルから制御文字を含むすべての行を削除するには、次のようにします。
grep -v '[[:cntrl:]]' file >file.modified
これにより、.という名前の新しいファイルが作成されますfile.modified
。この-v
フラグは、grep
ユーティリティーによって行われた一致の意味を反転し、[[:cntrl:]]
制御文字を含む行を一致させます。
Cロケールから印刷できない文字(Unicode文字など)を含む行を削除するには、次のようにします。
LC_ALL=C grep -v '[^[:print:]]' file >file.modified