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