dos2unix:找到二进制符号,跳过二进制文件

dos2unix: Binary symbol found, skipping binary file

我目前遇到一个问题,我的脚本在尝试对文件执行 dos2unix 命令时失败。

这是我在脚本中的内容:

dos2unix -n data/file data/tmp_file
dos2unix: Binary symbol found at line 21107611
dos2unix: Skipping binary file data/input/DATA.txt
mv -f data/tmp_file data/input/DATA.txt
mv: cannot stat ‘data/tmp_file’: No such file or directory

我去那行是问题,这里有一个“^@”。这是什么以及如何使用 dos2unix 命令让我的脚本工作?

{128392938928392838123129381298398129^@ 

谢谢

^@是Vim空字节的表示; cp。 :help <Nul>

普通文本文件不包含空字符。二进制文件通常有很多空字符,如果作为一个整体转换它们会损坏;这就是 dos2unix 拒绝转换它的原因。

您有多种选择:

  • 该空字符可能是意外插入的或者是垃圾。编辑文件(在 Vim 中)或重新创建它。如果您使用 Vim,您也可以在其中进行转换(通过 :help ++ff,例如 :w ++ff=unix)。 dos2unix 等命令行工具仍然用于非交互式调用。
  • 空字符属于那里。 dos2unix 命令有一个 -f|--force 选项来强制转换。