Removendo o caractere especial do terminal '^ @'

0

quando eu less um arquivo, é assim.

^@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

O problema é ^@ . Quando cat este arquivo, esse caractere não é visto.

O que é esse personagem? E como posso cortar isso (em C ou awk o que seja)?

    
por plhn 28.04.2016 / 06:12

1 resposta

2

^@ representa o byte NULL (0x00). (O ^x é um atalho para Ctrl x , que nos terminais apagaria os dois bits mais altos da tecla pressionada; assim, enquanto A é 0x41 [0100'0001] , Ctrl + A entraria 0x01 [0000'0001] e assim por diante.)

Para removê-lo, canalize por sed 's/^\x00//' ou sed 's/\x00//g' se ocorrer em outros lugares.

No entanto, normalmente NULL é simplesmente ignorado. Se o primeiro caractere for cortado, você provavelmente terá algo mais do que no arquivo. Considere olhar para o seu hexdump, e. com xxd , hexdump -C , cat -v ou sed -n l .

    
por 28.04.2016 / 06:37