删除终端特殊字符“^@”

删除终端特殊字符“^@”

当我less有一个文件时,它看起来像这样。

^@00002201-271f-43b9-81a7-000b0a31abe5
^@00004695-2281-44df-b18d-bd68b63fced4
^@00009273-3a0f-4c2e-b708-805e02147f55
^@0000a0e6-3889-43f2-9635-63e114c38f29
^@0000a386-cf2f-4459-bd63-e83fb144013c

问题是^@。当cat此文件时,看不到该字符。

这个字符是什么?我该如何修剪它(Cawk诸如此类)?

答案1

^@表示 NULL (0x00) 字节。( 是^x的简写Ctrlx,在终端上会清除所按下键的两个最高位;因此,当 是 时A0x41 [0100'0001]Ctrl+A 会输入0x01 [0000'0001],依此类推。)

要删除它,请通过管道传输sed 's/^\x00//',或者sed 's/\x00//g'如果它出现在其他地方。

但是,NULL 通常会被忽略。如果第一个字符被修剪,那么你可能遇到了一些问题更多的比文件中的要多。考虑查看其十六进制转储,例如,使用xxdhexdump -Ccat -vsed -n l

相关内容