有没有办法做到:
output | grep "string1" | grep "string2"
但是使用 awk,没有管道?
就像是:
output | awk '/string1/ | /string2/ {print $XY}'
如果有意义的话,结果应该是匹配的子集。
答案1
默认操作awk
是打印,所以相当于
output | grep string1 | grep string2
是
output | awk '/string1/ && /string2/'
例如
$ cat tst
foo
bar
foobar
barfoo
foothisbarbaz
otherstuff
$ cat tst | awk '/foo/ && /bar/'
foobar
barfoo
foothisbarbaz
答案2
如果你想awk
找到两者都匹配的行string1
和 string2
,以任何顺序,使用&&
:
output | awk '/string1/ && /string2/ {print $XY}'
如果您想要匹配其中一个(string1
或string2
两个),请使用||
:
output | awk '/string1/ || /string2/ {print $XY}'