我有这样的命令:
tac "$log" | awk -v pattern="$var1" '$9 ~ pattern {print; exit}'
如果$9
等于$var1
,则会打印最后一行。
我需要使用"和" 和"或" 来处理多种模式:
print if $9 ~ pattern and (if $9 ~ pattern2 or if $9 ~ pattern3)
我如何使用awk?
答案 0 :(得分:2)
tac "$log" | \
awk -v pat1="$p1" \
-v pat2="$p2" \
-v pat3="$p3" \
'$9 ~ pat1 && ($9 ~ pat2 || $9 ~ pat3) { print; exit }'
但是,如果您不需要从外部传递模式,您也可以在regexp中执行以下操作:
awk ... '$9 ~ pat1 && $9 ~ /pat2|pat3/ { print; exit }'