如何在awk中使用多个模式?

时间:2015-04-07 08:19:36

标签: bash awk

我有这样的命令:

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?

1 个答案:

答案 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 }'