我遇到以下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语法?
利迪娅
答案 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}'