Нет причин делать то, что они сделали. 2>&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
Если вы хотите, чтобы awk
находил строки, соответствующие как string1
, так и string2
, в любом порядке, используйте&&
:
output | awk '/string1/ && /string2/ {print $XY}'
Если вы хотите сопоставить либо string1
, либо string2
(, либо оба ), используйте||
:
output | awk '/string1/ || /string2/ {print $XY}'