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

时间:2018-12-13 14:06:39

标签: linux vim rhel dos2unix

我目前遇到一个问题,当我试图在文件上执行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^@ 

谢谢

1 个答案:

答案 0 :(得分:3)

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

普通文本文件不包含空字符。二进制文件通常包含许多空字符,如果将它们整体转换,它们将损坏。这就是dos2unix拒绝转换的原因。

您有几种选择:

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