когда я 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 ответ1

2

^@ представляет нулевой (0x00) байт. (^x - это сокращение от Ctrl x, которое на терминалах удаляет два старших бита нажатой клавиши; поэтому, пока 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 .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .