从OS X上的文件中删除内联空字节

时间:2016-09-23 18:37:44

标签: macos sed byte

我有一组文件,每隔一个字节插槽大致有空字节。此外,它们在开头具有字节序列FF FE,需要将其删除。我得到了文件(它们实际上是路由器配置文件,所以是纯文本),我不知道这些字节是如何进入的。但是,该文件看起来像这样,我发现例如herehere

FF FE 65 00 6E 00 61 00 62 6C 00 6C 65 00 0D 00
0A 00 63 00 6F 00 6E 00 66 00 69 00 37 00 75 00
72 00 65 00 20 00 74 00 65 00 72 00 6D 00 69 00

认为你可以想象它是如何发生的。我尝试了各种方法来删除空字节和前2个字节:

  • sed -i.bak 's/\x00//g' R2.txt什么也没做。
  • LC_ALL=C sed -i.bak 's/\x00//g' R2.txt什么也没做。
  • LC_ALL=C tr < R2.txt -d '\000' > R2-test.txt有效,但不符合规定。
  • LC_ALL=C sed -i.bak $'s/\x00//g' R2.txt抱怨sed: 1: "s/": unterminated substitute pattern

所以...我的问题是,如何在OSX上从内联的文件中删除前两个字节(FF FE)的空字节?

感谢。

1 个答案:

答案 0 :(得分:2)

你说&#34;大致在每个第二个字节时隙的空字节&#34;。这清楚地表明文件是用&#34; charset = utf-16le&#34;编码的。你需要将它转换为utf-8,ascii ..等。尝试类似下面的内容:

iconv -f "current-encoding"  -t "desired-encoding" infile.txt > outfile.txt