Есть ли способ удалить старший бит каждого байта в файле?

sed 's/^[ \t]*//'

Якорь ^указывает sedначинать с начала строки, а группа регулярных выражений [ \t]*— сопоставлять все *пробелы [ ]или табуляции [\t]от начала строки до конца строки. сначала не совпадают -и заменить их ничем//(т.е. удалить их ).

В квадратных скобках []вы можете указать диапазон символов для соответствия.

sed 's/[ \t]*$//'

Якорь $отмечает конец строки, поэтому на этот раз sed сопоставляет все пробелы и табуляции от конца строки до первого несоответствия -и снова заменяет их ничем.

Ваше второе выражение ищет все`файлы.cfg ниже текущего каталога

find. -type f -name *.cfg

и grepих по отдельности

-exec grep -li "$TYPE" '{}' \; 

ищет нечувствительное к регистру совпадение -iдля любой строки, хранящейся в переменной $TYPE, и возвращает имя файла -lдля всех совпадений. Из вашего поста невозможно понять, что $TYPEсодержит

Окончательный sedиспользует другой разделитель(sedпринимает первый не -командный символ в вашем аргументе в качестве разделителя,поэтому вы можете использовать все, что вам подходит, и в этом случае вам не нужен обычный /, потому что это один из ваших поисковых символов, а sed 's/.\///'менее понятен)

sed 's|./||' 

удалит первые два символа из каждого из имен файлов grep, если вторым символом является /. Это связано с тем, что первый .является подстановочным знаком для «любого символа».

Это, вероятно, предназначено для удаления ./из всех путей (, и в данном случае это будет ), но .интерпретируется как «любой символ», а не литерал .. Чтобы убедиться, что заменяется только литерал ., следует экранировать специальный символ .

sed 's|\./||'

И наконец, совпадения grepобъединяются в виде списка, разделенного пробелами, в

CONFIG_FILE=$(.....)
0
02.04.2021, 01:56
2 ответа

bbe— это «sed -подобный редактор для бинарных файлов». В Debian он находится в пакете bbe; Я не знаю, легко ли это доступно на Mac.

Это выполняет двоичное И с 0x7fдля каждого байта ввода:

bbe -e '& \x7f'

Пример использования:

<input_file bbe -e '& \x7f' >output_file
3
28.04.2021, 22:54

Perl спешит на помощь!

perl -wpe '$_ &= "\x7f" x length' < file

Если вы хотите обработать файл построчно (, например. если файл слишком велик и не помещается в память ), укажите шестнадцатеричный разделитель строк:

perl -0x8d...

(Я не уверен, был ли 0x0d символом новой строки в Apple II, поэтому исправьте значение по своему усмотрению ).

1
28.04.2021, 22:54

Теги

Похожие вопросы