如何同时有效地删除 10mb 日志文件和 cat 开头的 2 字节签名

如何同时有效地删除 10mb 日志文件和 cat 开头的 2 字节签名

乌班图16

我目前使用 cat 将日志文件从远程计算机传输到网站日志查看器。日志文件开头有一个两字节签名,告诉它该文件是 16 位还是 8 位。

如果我对文件进行纳米处理,该文件看起来像这样......

��2^@0^@1^@8^@0^@4^@2^@8^@ ^@1^@5^@:^@4^@3^@:^@0^@8^@
^@0^@1^@8^@0^@4^@2^@8^@ ^@1^@5^@:^@4^@3^@:^@0^@8^@

如果我cat filename仍然可以看到文件开头的前 2 个字节

▒▒20180428 15:43:08
20180428 15:43:08

如果我这样做的话,iconv -f utf-16 -t utf-8 filename它在外壳中看起来很棒......

20180430 03:57:46
20180430 03:57:46

但在网站上显示第一行部分编码

20180430 03:57:46 ㋾ ㄀㠀 㐀㌀   ㌀㨀㔀㜀㨀㐀㘀 嘀攀爀猀椀漀渀           㴀 㐀⸀ ⸀ ਀

现在,如果我反转日志,iconv -f utf-16 -t utf-8 filename | tac它就会完美地显示在网站上。

不知道如何继续。

答案1

如果你想删除前 2 个字节,你可以尝试:

dd if=orginal_file of=new_file ibs=2 skip=1

这将new_file在输出时跳过前 2 个字节。

答案2

如果您只想删除前两个字节,则可以使用tail -c +3.例如:

$ printf 'hello\n' >> file1
$ tail -c +3 file1
llo
$ _

相关内容