linux - 如何从 unix 中的文本文件中删除 "^@"?

标签 linux unix text-editor

我正在尝试使用 Unix 平台从多个文本文件中删除“^@”。我已经找到了 this解决方案,但它不适用于我的情况。我还使用了 sed -i -e 's/^@//g' testfile.txtdos2unix testfile.txt。 样本数据放here .

如有任何建议,我们将不胜感激。

最佳答案

您看到的 ^@ 不是文字字符串。它是 NUL(字符值 0)的转义码。如果你想全部删除它们:

tr -d '\0' <test.txt >newfile.txt

为了帮助诊断这类事情,od(八进制转储)实用程序非常方便。我在您链接的测试文件上运行了这个,以确认它们是 NUL:

$ od -c test.txt | head
0000000  \0   A  \0   i  \0   r  \0   Q  \0   u  \0   a  \0   l  \0   i
0000020  \0   t  \0   y  \0   S  \0   t  \0   a  \0   t  \0   i  \0   o
0000040  \0   n  \0   E  \0   o  \0   I  \0   C  \0   o  \0   d  \0   e
0000060  \0  \n  \0   D  \0   E  \0   H  \0   E  \0   0  \0   4  \0   4
*
0000400  \0  \n  \0   D  \0   E  \0   H      \0   E  \0   0  \0   4  \0
0000420   4  \0  \n  \0   D  \0   E  \0   H  \0   E  \0   0  \0   4  \0
*
0422160   4  \0  \n  \n
0422164

关于linux - 如何从 unix 中的文本文件中删除 "^@"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53045452/

相关文章:

vim - 如何有效地使用 VIM 编辑英文文本?

linux - jiffies.h 未知

c++ - 在 Unix 终端中打开程序时,有没有办法让程序名称和它的输入在同一行?

linux - 如何查看特定日期的备份文件列表

java - 从 Java 执行带反引号的 Unix 命令

visual-studio-code - 在 VS 代码编辑器或 Sublime 编辑器中打开文件夹时,点和下划线显示文件名

linux - 为 Linux 套接字调用读取后会发生什么

mysqldump : Got error: 1: "Can' t create/write to file '*.txt' (Errcode: 13 "Permission denied" )"when executing ' SELECT INTO OUTFILE'

java - 我应该在虚拟机中使用多少个线程?

vim - 切换文件/缓冲区时未保存的缓冲区警告