我有一个文件在每个字符后面都有可见的^@
个字符(蓝色)。我只能在vi file.txt
中看到这些字符。我无法使用cat
查看这些字符。我怎样才能删除它们?从linux文件中删除^ @个字符
我尝试使用以下命令:
sed "s/[^@]//g" a.txt > b.txt
然而,这似乎并没有改变文件。
我有一个文件在每个字符后面都有可见的^@
个字符(蓝色)。我只能在vi file.txt
中看到这些字符。我无法使用cat
查看这些字符。我怎样才能删除它们?从linux文件中删除^ @个字符
我尝试使用以下命令:
sed "s/[^@]//g" a.txt > b.txt
然而,这似乎并没有改变文件。
尝试iconv -f UTF16 -t UTF8 <your-file> > <new-file>
谢谢,这工作。 – user1882633
@ user1882633我得到以下错误:iconv:不完整的字符或缓冲区末尾的移位序列无论如何,你可以帮助我吗? :D –
你确定你的源文件是一个有效的UTF16吗? – user3159253
dos2unix file.txt file.txt
。这将做..
您需要dos2unix> = 6.0才能将UTF-16文件转换为UTF-8。 –
这工作:
sed "s/[\^@]//g" a.txt > b.txt
您可以使用'dos2unix'从DOS(窗口的东西)转换为UNIX。 – fedorqui
可能你有一个UTF16编码的文件。在Linux中,您可以在当前的语言环境中看到它,它在大多数情况下都是以字节为导向的(甚至是UTF-8)。你看到的^ @是ASCII码0,16位符号的高位部分对于大多数拉丁字母是0。 – user3159253
这些是空字节(0x00),可能是由于您的文件被编码为UTF-16,每个字符使用两个字节,因此对于正常的ASCII文本具有与ASCII字节交织的空字节。 –