Existe uma maneira de detectar bytes nulos (␀, NUL, \ 0) em sed?

15

Relacionado a outra pergunta , a fim de detectar de forma difusa arquivos binários, existe uma maneira de detectar ␀ bytes em sed ?

    
por l0b0 18.04.2012 / 08:55

2 respostas

16

Exemplo:

Prove que estou enviando um byte NUL, seguido por uma nova linha:

$ echo -e \0 | hexdump -C
00000000  00 0a                                             |..|
00000002

Agora altero o byte NUL para um ponto de exclamação ! :

$ echo -e \0 | sed 's/\x00/!/' | hexdump -C
00000000  21 0a                                             |!.|

Então, o truque é usar \x00 como NUL-byte.

    
por 18.04.2012 / 11:43
7

Sim, o padrão \x00 corresponde ao byte nulo.

Exemplo:

$ printf "
$ printf "%pre%\n%pre%\n" > file
$ sed -e 's/\x00/test/' -i file
$ cat file
test
test
$  
\n%pre%\n" > file $ sed -e 's/\x00/test/' -i file $ cat file test test $
    
por 18.04.2012 / 11:34

Tags