Команда GREP
процессы текста в строках, целые линии. Есть несколько вариантов, которые могут силой , чтобы соответствовать только частью линии или (как в вашем примере) шаблон промежутки, чтобы соответствовать более одной строке, но обычно, если вам нужно использовать такие параметры, это означает что другие инструменты должны использоваться вместо этого.
Это сказано, что я предпочел бы использовать awk
в вашем первом примере:
lspci -vq | awk 'BEGIN{RS="\n\n";IGNORECASE=1} /wireless/'
и PCREGREP
в секунду:
iwlist wlan0 scan | pcregrep -iMo 'cell 13(.|\n)*(?=cell 14)'
Я скачал этот инсталлятор и взглянул. Вот соответствующие фрагменты кода:
#!/bin/bash
MD5=1fe8463da9322ad9c966a57b92569a52
# The required tools:
SED=sed
MD5SUM=md5sum
CUT=cut
DATA="$SED -e '1,/^__DATA__$/d' '$0'"
# Check archive integrity:
test `eval $DATA | $MD5SUM | $CUT -d " " -f 1` = $MD5 || {
echo "Checksum error in '$0'" >&2
exit 1
}
# ...
exit 0
# Everything after the next line is a .tar.bz2 file
__DATA__
[a binary blob finishes the file]
Он выполняет sed -e '1,/^__DATA__$/d'
на самом скрипте, который удаляет все строки из начала (строка 1) в строку __DATA__
, оставляя позади только двоичный файл. Затем двоичный файл проходит через md5sum
, чтобы получить контрольную сумму, cut
, затем форматирует её так, чтобы она содержала только контрольную сумму (без имени файла), и затем сравнивается с жестко закодированной контрольной суммой из более ранних версий скрипта.
Тестовое утверждение test
возвращает true, когда MD5 совпадает, и false, когда MD5 не совпадает. Тест ||
будет коротким замыканием, когда значение теста будет истинным, что означает, что он прекращает оценку. Строфа в скобках будет работать только в том случае, если тест окажется ложным.
Так как вы, скорее всего, ничего не трогали (намеренно) после этой строки __DATA__
, вероятно, виноват ваш текстовый редактор. Я подозреваю, что он добавил пробел или пустую строку, или же преобразовал строки между форматами DOS и UNIX ( узнайте больше о новых строках в Википедии).
Другая возможность - это то, что загрузка не удалась, и у вас поврежденный файл. Если вас это не беспокоит, просто удалите строку exit 1
из строки MD5 test stanza и программа установки будет работать просто отлично.
(Этот сценарий написан не очень хорошо, поэтому я совсем не удивлён, что вам пришлось его изменить, чтобы он заработал)
.