![删除终端特殊字符“^@”](https://linux22.com/image/1491590/%E5%88%A0%E9%99%A4%E7%BB%88%E7%AB%AF%E7%89%B9%E6%AE%8A%E5%AD%97%E7%AC%A6%E2%80%9C%5E%40%E2%80%9D.png)
当我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
此文件时,看不到该字符。
这个字符是什么?我该如何修剪它(C
或awk
诸如此类)?
答案1
^@
表示 NULL (0x00) 字节。( 是^x
的简写Ctrlx,在终端上会清除所按下键的两个最高位;因此,当 是 时A
,0x41 [0100'0001]
Ctrl+A 会输入0x01 [0000'0001]
,依此类推。)
要删除它,请通过管道传输sed 's/^\x00//'
,或者sed 's/\x00//g'
如果它出现在其他地方。
但是,NULL 通常会被忽略。如果第一个字符被修剪,那么你可能遇到了一些问题更多的比文件中的要多。考虑查看其十六进制转储,例如,使用xxd
、hexdump -C
、cat -v
或sed -n l
。