$ awk '/from=/ {print $7} /to=/ { print $7}' erroMuitoDoido.txt
Причина:
from=atendimento@dominio.com.br,
^^
^^
Все действия выполняются в порядке, если вход соответствует соответствующему шаблону. Если вход соответствует обоим шаблонам, оба действия выполняются.
Если Вы хотите распечатать поле, соответствует ли оно одному шаблону или другому, объединение два:
awk '/from/ || /to/ { print $7}' erroMuitoDoido.txt
Здесь можно объединить эти два выражения в единственное соответствие regexp:
awk '/from|to/ { print $7}' erroMuitoDoido.txt
Поскольку, что Вы делаете, необходимо привязать соответствие в начале поля, поскольку Вы, вероятно, не хотите соответствовать адресам электронной почты, которые, оказывается, содержат подстроку from
или to
:
awk '$7 ~ /^(from|to)=/ { print $7}' erroMuitoDoido.txt
Если Вы хотите другое отношение с этим более точным соответствием, можно использовать отдельные действия, так как эти шаблоны не накладываются.
awk '$7 ~ /^from=/ { … } $7 ~ /^to=/ { … }' erroMuitoDoido.txt
Если Вы хотите прекратить обрабатывать дальнейшие действия и движение к следующей строке, можно использовать next
ключевое слово.
$0
. Вы, вероятно, намеревались записать $7~/^(from|to)=/
. Поскольку я не уверен, что это всегда будет $7
, возможно, / (from|to)=/
было бы лучше.
– manatwork
21.09.2012, 12:08
/from=/ || /to=/ { print $7 }
– jw013 20.09.2012, 17:56from=
илиto=
в их адресе электронной почты у Вас будет та же проблема. Вряд ли, но Вы могли бы также сделать его: from=
и: to=
сделать ложные положительные стороны еще менее вероятно. – Jim Paris 20.09.2012, 23:05