如何从 unix 中的文本文件中删除“^@”?
how to remove "^@" from text files in unix?
我正在尝试使用 Unix 平台从多个文本文件中删除“^@”。我已经找到 this 解决方案,但它不适用于我的情况。我还使用了 sed -i -e 's/^@//g' testfile.txt
和 dos2unix testfile.txt
。
示例数据放在 here.
如有任何建议,我们将不胜感激。
您看到的 ^@
不是文字字符串。它是 NUL(字符值 0)的转义码。如果你想全部删除它们:
tr -d '[=10=]' <test.txt >newfile.txt
为了帮助诊断这类事情,od
(八进制转储)实用程序非常方便。我 运行 在你链接的测试文件上,确认它们是 NULs:
$ od -c test.txt | head
0000000 [=11=] A [=11=] i [=11=] r [=11=] Q [=11=] u [=11=] a [=11=] l [=11=] i
0000020 [=11=] t [=11=] y [=11=] S [=11=] t [=11=] a [=11=] t [=11=] i [=11=] o
0000040 [=11=] n [=11=] E [=11=] o [=11=] I [=11=] C [=11=] o [=11=] d [=11=] e
0000060 [=11=] \n [=11=] D [=11=] E [=11=] H [=11=] E [=11=] 0 [=11=] 4 [=11=] 4
*
0000400 [=11=] \n [=11=] D [=11=] E [=11=] H [=11=] E [=11=] 0 [=11=] 4 [=11=]
0000420 4 [=11=] \n [=11=] D [=11=] E [=11=] H [=11=] E [=11=] 0 [=11=] 4 [=11=]
*
0422160 4 [=11=] \n \n
0422164
我正在尝试使用 Unix 平台从多个文本文件中删除“^@”。我已经找到 this 解决方案,但它不适用于我的情况。我还使用了 sed -i -e 's/^@//g' testfile.txt
和 dos2unix testfile.txt
。
示例数据放在 here.
如有任何建议,我们将不胜感激。
您看到的 ^@
不是文字字符串。它是 NUL(字符值 0)的转义码。如果你想全部删除它们:
tr -d '[=10=]' <test.txt >newfile.txt
为了帮助诊断这类事情,od
(八进制转储)实用程序非常方便。我 运行 在你链接的测试文件上,确认它们是 NULs:
$ od -c test.txt | head
0000000 [=11=] A [=11=] i [=11=] r [=11=] Q [=11=] u [=11=] a [=11=] l [=11=] i
0000020 [=11=] t [=11=] y [=11=] S [=11=] t [=11=] a [=11=] t [=11=] i [=11=] o
0000040 [=11=] n [=11=] E [=11=] o [=11=] I [=11=] C [=11=] o [=11=] d [=11=] e
0000060 [=11=] \n [=11=] D [=11=] E [=11=] H [=11=] E [=11=] 0 [=11=] 4 [=11=] 4
*
0000400 [=11=] \n [=11=] D [=11=] E [=11=] H [=11=] E [=11=] 0 [=11=] 4 [=11=]
0000420 4 [=11=] \n [=11=] D [=11=] E [=11=] H [=11=] E [=11=] 0 [=11=] 4 [=11=]
*
0422160 4 [=11=] \n \n
0422164