加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-14 05:48:56 所属栏目:百科 来源:网络整理
导读:花了几个小时试图用这个问题的部分答案自己回答这个问题;所以我很抱歉,如果这已经得到了回答,但结合我能找到的部分解决方案来正确执行此搜索似乎超出了我的范围. 我正在尝试做的事情:在目录中搜索包含多个唯一字符串的文件,文件中任何位置的任何顺序,但不包
花了几个小时试图用这个问题的部分答案自己回答这个问题;所以我很抱歉,如果这已经得到了回答,但结合我能找到的部分解决方案来正确执行此搜索似乎超出了我的范围.

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

这是我到目前为止的搜索:

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读