grep中的正则表达式包含A,B,C ……但不包含Z的文件

前端之家收集整理的这篇文章主要介绍了grep中的正则表达式包含A,B,C ……但不包含Z的文件前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
花了几个小时试图用这个问题的部分答案自己回答这个问题;所以我很抱歉,如果这已经得到了回答,但结合我能找到的部分解决方案来正确执行此搜索似乎超出了我的范围.

我正在尝试做的事情:在目录中搜索包含多个唯一字符串的文件,文件中任何位置的任何顺序,但不包含文件中任何位置的其他特定字符串.

这是我到目前为止的搜索

pcregrep -riM '^(?=.*uniquestringA)(?=.*uniquestringB)(?=.*uniquestringC)(?=.*uniquestringD)(?=.*uniquestringE).*$' . 
| xargs grep -Li 'uniquestringZ'

我意识到这是可怕的,可怕的错误,因为我甚至似乎无法让多行搜索工作而忽略字符串出现的顺序.

任何帮助是极大的赞赏.

解决方法

虽然它需要大量的grep调用,但您可以使用find和grep以简单且符合POSIX的方式编写它:

find . -type f \
  -exec grep -q "stringA" {} \; \
  -exec grep -q "stringB" {} \; \
  -exec grep -q "stringC" {} \; \
  -exec grep -q "stringD" {} \; \
  ! -exec grep -q "stringZ" {} \; \
  -print  # or whatever to do with matches

猜你在找的正则表达式相关文章