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

MR *_*POT 5 linux vim dos2unix rhel

我目前遇到的问题是我的脚本在尝试对文件执行 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
Run Code Online (Sandbox Code Playgroud)

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

{128392938928392838123129381298398129^@ 
Run Code Online (Sandbox Code Playgroud)

谢谢

Ing*_*kat 9

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

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

您有多种选择:

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