为单个命令指定多个可能的模式

时间:2011-09-17 15:23:43

标签: linux unix sed text-editor

基本上有几行包含一个共同的格式,但最后有不同的措辞。该命令适用于所有这些命令,但我希望匹配所有可能的模式,因此脚本中只需要1行。作为一个例子,我知道如何让脚本像这样工作:

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

有什么想法吗?

1 个答案:

答案 0 :(得分:4)

如果您的模式与示例中的模式非常相似,则可以使用

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命令不支持扩展正则表达式,则可能必须转向awkperl

perl -ple '/(pattern1|pattern2|pattern3)/ && s/asdf/ghjk/g'