6

我目前遇到一个问题,即我的脚本在尝试对文件执行 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^@ 

谢谢

4

1 回答 1

12

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

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

你有几个选择:

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