用 nul 替换换行符

Ter*_*ice 4 osx text-processing newlines

bash, osx 小牛队

我想用txt 文件中的0ANUL (hex= 00)替换 LF 字符 (hex= ) 。我可以使用greptr或其他东西来完成这个吗?我一直在使用 bbedit 来替换它们,但我想要一些我可以在 bash 中快速完成的事情。

Sté*_*las 14

是的,这是一份工作tr

tr '\n' '\0' < file > file.new
Run Code Online (Sandbox Code Playgroud)

或就地:

tr '\n' '\0' < file 1<> file
Run Code Online (Sandbox Code Playgroud)

在这里,文件被自己覆盖。这是有效的,因为我们总是在写入与读取一样多的数据(而不是覆盖我们尚未读取的数据)。如果tr过程中断,可以再次启动以完成工作。

与 相反perl -pi 's/\n/\0/',它保留了文件的所有属性并且不会破坏硬链接或符号链接,并且不需要复制磁盘上的数据(除非下面有一些写时复制)。

  • 在这里推荐 `1&lt;&gt;` 似乎有点危险,而没有解释它的作用以及为什么它在_这个特殊_情况下有效。 (7认同)