2012年9月2日日曜日

制御コード ^@ を除去する

viでテキストファイルを開くと^@が...

 
とあるシステムで生成されたテキストファイルをシェルスクリプトで一括処理しようとしたところ、どうもうまく読み取れないことがありました。
そのファイルを vi で開いてみると、行末に大量の制御コード NUL (^@) が。どうもこれが影響しているっぽい。
そこで、テキストファイルに含まれる制御コード NUL (^@)を除去する簡単な方法の紹介。

trコマンドで一括除去

 
JIS X 0211 制御コード表によると、0x00が ^@ に該当するので、
$ tr -d "\000" < origin.txt > new.txt
こんな感じで取り除くことができます。