Sed 保持行中包含“;不同单词的列表;相似模式

Sed 保持行中包含“;不同单词的列表;相似模式,sed,Sed,我怎样才能使所有的行与所有这些单词保持一致 toto或titi或clic或SOMETHING并删除任何其他行 例如,如果我选择了sed'/toto/p'文件,我就不能选择titi 我要寻找的是类似于Perl正则表达式的东西 ^(word1 | word2 | word3 |等等)。*。但是,我需要它用于sed,因为它将集成到一个更大的sed脚本中 目标是保持所有行都以word开头,其中word是一组单词中的任意一个单词。这里的答案取决于主脚本的调用方式。假设您有一个包含以下内容的文件: foo

我怎样才能使所有的行与所有这些单词保持一致
toto
titi
clic
SOMETHING
并删除任何其他行

例如,如果我选择了
sed'/toto/p'文件
,我就不能选择
titi

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


目标是保持所有行都以
word
开头,其中
word
是一组单词中的任意一个单词。

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

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
脚本开头不需要的行。

如何调用较大的
sed
脚本?如果它被称为
sed
,那么手头的任务将是删除所有与相应表达式不匹配的行,如果它被称为
sed-n
,您实际上必须选择感兴趣的行。但我的总体建议是设置您的第一个
awk
规则来删除不匹配的行。。。所以我把它改编成sed-I-E'/^(word1.*.| word2 | word3.*.|等)$/!d'thanks@francoisP别忘了转义你的
和括号,它是
/^\(word1\\\word2\\124; word3\\\\\\…).$/!d