Укажите несколько возможных шаблонов для одной команды - PullRequest
2 голосов
/ 17 сентября 2011

В основном, есть несколько строк, которые содержат общий формат, но разные формулировки в конце.Команда будет работать для всех из них, но я хочу сопоставить все возможные шаблоны, поэтому в скрипте требуется только 1 строка.Например, я знаю, как заставить скрипт работать так:

/pattern1/ s/asdf/ghjk/g
/pattern2/ s/asdf/ghjk/g
/pattern3/ s/asdf/ghjk/g

Есть идеи?

1 Ответ

4 голосов
/ 17 сентября 2011

Если ваши шаблоны действительно такие же, как в вашем примере, вы можете использовать

sed -e '/pattern[1-3]/ s/asdf/ghjk/g'

Если шаблоны не очень похожи и ваша команда sed поддерживает расширенные регулярные выражения, вы можете использовать

sed -E -e '/(pattern1|pattern2|pattern3)/ s/asdf/ghjk/g'
#   ^^ use extended regular expressions
#      for GNU sed, use -r or escape (, |, and ) with \

Если ваша команда sed не поддерживает расширенные регулярные выражения, вам, возможно, придется обратиться к awk или perl:

perl -ple '/(pattern1|pattern2|pattern3)/ && s/asdf/ghjk/g'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...