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=$(.....)
bbe
— это «sed -подобный редактор для бинарных файлов». В Debian он находится в пакете bbe
; Я не знаю, легко ли это доступно на Mac.
Это выполняет двоичное И с 0x7f
для каждого байта ввода:
bbe -e '& \x7f'
Пример использования:
<input_file bbe -e '& \x7f' >output_file
Perl спешит на помощь!
perl -wpe '$_ &= "\x7f" x length' < file
Если вы хотите обработать файл построчно (, например. если файл слишком велик и не помещается в память ), укажите шестнадцатеричный разделитель строк:
perl -0x8d...
(Я не уверен, был ли 0x0d символом новой строки в Apple II, поэтому исправьте значение по своему усмотрению ).