在“=”分隔符后面的awk +匹配字符串

时间:2010-07-22 08:49:13

标签: awk

我遇到以下awk语法的问题

echo " param1 param2 param3 = param1 AA , AB , AC , AD  "  | awk -F"=" '$2~/AA|AB|AC|AD/{print "passed"}'

awk打印“通过”,但不应该是因为在“=”之后我有“param1”而不是“AA”或AB“等等。

awk的目标是仅在“=”之后的字符串为AA或AB或AC或AD时才打印“传递”。

如果我在“=”之后还有其他内容,则不应该打印

如何修复awk语法?

利迪娅

2 个答案:

答案 0 :(得分:1)

你需要锚点:

awk -F= '$2 ~ /^(AA|AB|AC|AD)$/ {print "passed"}'

如果你想允许空格:

awk -F= '$2 ~ /^ *(AA|AB|AC|AD) *$/ {print "passed"}'

答案 1 :(得分:0)

这应该有效:

echo " param1 param2 param3 = param1 AA , AB , AC , AD  "  | 
awk -F"=" -v var="passed" '$2~/AA|AB|AC|AD/{printf "%s",var}'