awk + строка соответствия после разделителя «=» - PullRequest
0 голосов
/ 22 июля 2010

У меня проблема со следующим синтаксисом awk

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

awk печатает "пройдено", но этого не должно быть, потому что после "=" у меня есть "param1", а не "AA" или AB "и т. Д.

Цель awk - печатать «пройдено», только если строка после «=» имеет тип АА, АБ, АБ, АС, ИЛИ АД.

и если у меня есть что-то еще после "=", то его не следует печатать передано

как исправить синтаксис awk?

1012 * Lidia *

Ответы [ 2 ]

1 голос
/ 22 июля 2010

Вам нужны анкеры:

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

Если вы хотите разрешить пробелы:

awk -F= '$2 ~ /^ *(AA|AB|AC|AD) *$/ {print "passed"}'
0 голосов
/ 22 июля 2010

Это должно работать:

echo " param1 param2 param3 = param1 AA , AB , AC , AD  "  | 
awk -F"=" -v var="passed" '$2~/AA|AB|AC|AD/{printf "%s",var}'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...