基本上有几行包含一个共同的格式,但最后有不同的措辞。该命令适用于所有这些命令,但我希望匹配所有可能的模式,因此脚本中只需要1行。作为一个例子,我知道如何让脚本像这样工作:
/pattern1/ s/asdf/ghjk/g
/pattern2/ s/asdf/ghjk/g
/pattern3/ s/asdf/ghjk/g
有什么想法吗?
答案 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
命令不支持扩展正则表达式,则可能必须转向awk
或perl
:
perl -ple '/(pattern1|pattern2|pattern3)/ && s/asdf/ghjk/g'