Удаление терминального специального символа `^@`
Когда я 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 ответ
Решение
^@
представляет нулевой (0x00) байт. (The ^x
сокращение от Ctrlx, которое на терминалах очищает два старших бита нажатой клавиши; так что пока A
является 0x41 [0100'0001]
Ctrl+A будет вводить 0x01 [0000'0001]
, и так далее.)
Чтобы снять его, проложите через sed 's/^\x00//'
, или же sed 's/\x00//g'
если это происходит в других местах.
Однако NULL обычно просто игнорируется. Если первый символ обрезается, то у вас, вероятно, есть что-то большее, чем это в файле. Посмотрите на его hexdump, например, с xxd
, hexdump -C
, cat -v
, или же sed -n l
,