代码之家  ›  专栏  ›  技术社区  ›  tyrande

排除包含字符串“x”的通配符

  •  0
  • tyrande  · 技术社区  · 7 年前

    有没有办法修改 egrep -rha 'part1.*part2' 添加如下内容:“如果 .* 包含(不一定等于) string_x 那么图案就不匹配了?问题是 字符串\u x 每行都有,所以我不能 -v 它在模式之前或之后有这个字符串是可以的,只是不要在中间。

    我假设是双倍的 .* 具有 not string_x 他们之间的合作将完成工作,但这需要很多时间,而且我有时会使用 .{n,m} 通配符,在这种情况下,它将是所需通配符长度的两倍。可能每次遇到某种搜索终止 字符串\u x 第2部分之前?

    1 回复  |  直到 7 年前
        1
  •  2
  •   Mad Physicist    7 年前

    忘了你听说过 -r 或任何其他出租选择 grep 查找文件。有一个非常好的工具可以查找名称非常明显的文件- find . 让grep知道自己擅长什么 g/re/p . 我无法想象GNU的家伙们在决定给grep提供查找文件的选项时抽的烟是什么,但希望他们现在不会打算添加选项来排序文件或从网站中提取内容或打印流程数据,或做任何现有工具做得很好的事!

    在这种情况下,你要寻找的不仅仅是 总经理/副总裁 尽管如此,您还是应该使用awk:

    awk '/part1.*part2/ && !/part1.*string_x.*part2/'
    

    因此,完整脚本类似于(未测试,因为未提供示例输入/输出):

    find . -type f -exec awk '/part1.*part2/ && !/part1.*string_x.*part2/' {} +