问题
Is it possible (and how) to chain patterns with ack (ack-grep on some distributions of Linux) like I'm used to with grep?
e.g.
grep "foo" somefile.c | grep -v "bar"
...to match all lines with "foo" but without "bar".
回答1:
ack
uses Perl regular expressions, and those allow lookahead assertions:
^(?!.*bar).*foo.*$
will match a line that contains foo
but doesn't contain bar
.
I'm not familiar with the usage of ack
, but something like this should work:
ack '^(?!.*bar).*foo.*$' myfile
来源:https://stackoverflow.com/questions/6188879/multiple-patterns-with-ack-grep