web-dev-qa-db-ja.com

改行をnulに置き換えます

bash、osx mavericks

LF文字(hex = 0A)NUL(hex = 00)txtファイル。 grepまたはtrなどを使用してこれを実現できますか?私はbbeditを使用してそれらを置き換えてきましたが、bashですばやく実行できるものが欲しいです。

3
Terkey-Juice

はい、それはtrの仕事です。

tr '\n' '\0' < file > file.new

またはインプレース:

tr '\n' '\0' < file 1<> file

ここでは、ファイルはそれ自体の上に書き込まれます。これは、私たちが常に読んでいるのと同じ量のデータを書き込んでいるために機能します(そして、まだ読んでいないデータを上書きしません)。 trプロセスが中断された場合、ジョブを終了するためにプロセスを再開できます。

に反して Perl -pi 's/\n/\0/'、ファイルのすべての属性を保持し、ハードリンクやシンボリックリンクを壊さず、ディスク上のデータを複製する必要はありません(コピーオンライトが実行されている場合を除く)。

11