grep - 列出不包含两种模式的所有行

New*_*bie 3 bash grep

我有一个包含一些记录的文本文件.我有两个模式要验证,我想列出文件中不包含两个模式的所有行.我怎么能用grep命令做到这一点?
我尝试了很少的东西,grep -v但似乎没什么用.

假设我的文本文件如下.
1. qwer pattern1yui
2. ads pattern2asd
3. cczxczc
4. pattern2jkjk adsdapattern1

我想仅列出第1,2和3行.

提前致谢.

anu*_*ava 10

您可以使用:

grep -w -v -e "word1" -e "word2" file
Run Code Online (Sandbox Code Playgroud)

或者使用egrep:

egrep -w -v -e "word1|word2" file
Run Code Online (Sandbox Code Playgroud)

更新:根据评论,似乎以下awk将更好地工作:

awk '!(/pattern1/ && /pattern2/)' file
Run Code Online (Sandbox Code Playgroud)

  • `!($ 0~/word1/&& $ 0~/word2 /)` - >`!(/ word1/&&/word2 /)`.在这种情况下,`/ word1/&&/word2/{next} 1`可能更清晰,但是YMMV. (2认同)
  • 哦非常感谢@EdMorton:我刚刚在答案中实现并编辑了相同内容. (2认同)