保持包含“不同单词列表”的行,例如模式

时间:2018-11-23 09:17:40

标签: sed

如何使所有行与所有这些单词匹配 tototiticlicSOMETHING并删除其他任何行?

例如,如果我sed '/toto/ p ' file不能选择titi

我正在寻找的东西类似于Perl正则表达式, ^ (word1|word2|word3|andsoon).*。但是,sed需要它,因为它将被集成到更大的sed脚本中。

目标是使所有行以word开头,其中word是一组单词中的任何单词。

1 个答案:

答案 0 :(得分:1)

这里的答案取决于您的主脚本的调用方式。假设您有一个包含以下内容的文件:

foo
car
bar

并且您对匹配“ foo”和“ bar”的行感兴趣,那么您可以:

sed '/foo\|bar/!d'
sed -n '/foo\|bar/!d;p'
sed -n '/foo\|bar/p'

所有这些都将输出:

foo
bar

如果您愿意的话:

sed '/foo\|bar/p'

您实际上重复了这些行。

foo
foo
car
bar
bar

如您所见,根据-n标志的用法,会有一些不同的处理方式。

  

-n, --quiet, --silent 禁止自动打印图案空间

     

来源:man sed

通常,我的建议是在脚本sed的开头删除不需要的行。