Powiązane z innym pytaniem , aby w niewyraźny sposób wykrywać pliki binarne, czy istnieje sposób na wykrycie ␀ bajtów sed?
Powiązane z innym pytaniem , aby w niewyraźny sposób wykrywać pliki binarne, czy istnieje sposób na wykrycie ␀ bajtów sed?
Odpowiedzi:
Przykład:
Udowodnij, że wysyłam bajt NUL, a następnie nowy wiersz:
$ echo -e \\0 | hexdump -C
00000000 00 0a |..|
00000002
Teraz zmieniam bajt NUL na !wykrzyknik:
$ echo -e \\0 | sed 's/\x00/!/' | hexdump -C
00000000 21 0a |!.|
Więc sztuczka jest używana \x00jako bajt NUL.
echo -ne \\0uniknąć nowej linii.
hexdump -Csię uniname -bcepu, aby zobaczyć, który to znak wysypisk.
Tak, wzór \x00pasuje do bajtu zerowego.
Przykład:
$ printf "\0\n\0\n" > file
$ sed -e 's/\x00/test/' -i file
$ cat file
test
test
$
\0go bajtem zerowym. Ta zamiana nie jest konieczna („będzie obsługiwana”), a bash nie obsługuje jej bezpośrednio. Do tego musisz użyć echo -e. Zamieniam na echoz printfw odpowiedzi, która wydaje się bardziej zgodna ...