Можно найти sed легче в этом случае.
sed -ne '/start/,/end/p'
Альтернатива sed выражение, которое связывает подобранные строки вместе:
sed -ne '/start/ba; be;' \
-e ':a; N; /end/{s/\n/ /g; p; be;}; ba' \
-e :e
Первый раздел переходит для маркировки a
если строка соответствует /start/
, иначе ответвления к e
(конец).
Вторые циклы раздела через строки, добавляющие их к пространству шаблона до соответствия строки /end/
найден, когда это заменяет новые строки пробелами, печатает строку и затем переходит к e
(конец).
Третий раздел просто обеспечивает маркировку e
.
*
имеет особое значение в регулярных выражениях, так выйдите из него:
env | grep 'xyz\*!'
Или используйте -F
опция сказать grep
рассматривать параметр как простой текст, не как регулярное выражение:
env | grep -F 'xyz*!'
grep -F
вероятно, легче, чем попытка выйти не-regex в regex с нормальнымgrep
. – jw013 01.11.2012, 15:51