用 grep 匹配一行中的两个字符串

新手上路,请多包涵

我正在尝试使用 grep 来匹配包含两个不同字符串的行。我尝试了以下方法,但这匹配包含 string1 string2 的行,这不是我想要的。

 grep 'string1\|string2' filename

那么我如何匹配 grep 仅包含 两个字符串 的行?

原文由 hearsaxas 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.1k
2 个回答

您可以使用

grep 'string1' filename | grep 'string2'

或者

grep 'string1.*string2\|string2.*string1' filename

原文由 dheerosaur 发布,翻译遵循 CC BY-SA 4.0 许可协议

我想这就是你要找的:

 grep -E "string1|string2" filename

我认为答案是这样的:

 grep 'string1.*string2\|string2.*string1' filename

仅匹配两者都存在的情况,而不是一个或另一个或两者都存在的情况。

原文由 user45949 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题