Что такое sed
заклинание удалить нулевые байты из файла? Я пытаюсь:
s/\000//g
но это убирает нули.
s/\x00//g
кажется, не имеет никакого эффекта. Я пытаюсь сделать это в sed
сценарии, поэтому я не уверен, что echo
трюк сработает.
Я не знаю, как вы можете достичь этого с помощью sed
, но это решение, которое работает с tr
:
tr < file-with-nulls -d '\000' > file-without-nulls
Это решение, sed
которое работает в некоторых случаях, но не во всех:
sed 's/\x0//g' file1 > file2
Это решение, которое включает замену на пробелы, которые должны работать во всех случаях:
sed 's/\x0/ /g' file1 > file2
-i
параметр для преобразования файла на место.tr
опрокинул некоторые другие байты в моем файле иsed
ничего не заменил. Я сделал это неsed
в Python:Вот трубный однострочник:
Я также заметил, что некоторые команды фактически оставляют там нулевые байты, но они больше не видны, по крайней мере, в терминале OSX. Я использовал
hexdump
для отладки этого.источник
Использовать Perl для выполнения регулярных выражений довольно просто. Просто замените
sed
наperl -np -e
:С
-n
опцией, регулярные выражения запускаются строка за строкой, как sed.Если вы хотите использовать нулевые байты в качестве разделителей записей, используйте параметр Perl
-0
.Вы можете посмотреть параметры командной строки Perl, запустив
perldoc perlrun
.источник
Чтобы соответствовать нулевому байту, я использую это регулярное выражение с SED Cygwin:
источник