【发布时间】:2013-10-07 02:08:07
【问题描述】:
我正在学习在 unix 中使用 sed。 我有一个包含很多行的文件,我想删除除包含字符串(例如)alex、eva 和 tom 的行之外的所有行。 我想我可以使用
sed '/alex|eva|tom/!d' filename
但是我发现它不起作用,它无法匹配该行。它只匹配“alex|eva|tom”... 只有
sed '/alex/!d' filename
有效。
有人知道如何使用 sed 选择包含超过 1 个单词的行吗?
另外,像“sed '/(alex)|(eva)|(tom)/!d' file”这样的括号不起作用,我想要包含所有三个单词的行。
【问题讨论】:
-
也许你需要括号?
-
@sam092 即使我使用“ sed '/(alex)|(eva)/!d' file ”它也不起作用。
-
对不起,我之前的评论不相关。所以你的意思是你想要所有三个词而不是其中任何一个?单词的任何特定顺序?
-
@sam092 是的,已经有了答案,但似乎与“全部”不匹配。
-
只是因为
|应该是“或”的意思