gpt4 book ai didi

shell - 如何使用 ack 指定忽略模式?

转载 作者:行者123 更新时间:2023-12-04 22:30:57 24 4
gpt4 key购买 nike

我正在尝试搜索包含“foo”的行,但这些行不能包含“bar”。使用 ack 使用这些参数进行搜索的好方法是什么? ?

我可以:
ack "foo" | grep -v "bar"
但它没有保留 ack 的布局和彩色输出.另外,grepack 不同,对 Perl 正则表达式没有很好的支持.

最佳答案

您可以使用稍微复杂一些的正则表达式:

ack '^(?!.*bar).*(foo)' file
(?!...)做一个负面的前瞻以确保“bar”不在行上。这是它的工作原理:
  • ^从行首开始。
  • (?!.*bar)前进任意数量的字符,直到找到“bar”。如果找到,请不要继续。否则,返回到行首并继续。
  • .*(foo)在行首和行尾之间的任何点匹配(并捕获)“foo”。

  • 测试一下:
    $ cat file
    other foo bar
    baz foo other
    $ ack '^(?!.*bar).*(foo)' file
    baz foo other

    关于shell - 如何使用 ack 指定忽略模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25590532/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com