Проблема с использованием grep управляет с ENV, переменным содержащий специальные символы

Можно найти 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.

0
01.11.2012, 15:49
1 ответ

* имеет особое значение в регулярных выражениях, так выйдите из него:

env | grep 'xyz\*!'

Или используйте -F опция сказать grep рассматривать параметр как простой текст, не как регулярное выражение:

env | grep -F 'xyz*!'
4
28.01.2020, 02:21
  • 1
    Если не использование regex, grep -F вероятно, легче, чем попытка выйти не-regex в regex с нормальным grep. –  jw013 01.11.2012, 15:51

Теги

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