Почему awk выполняет оба действия?

Это сообщение об ошибке объяснено в FAQ rsync.

Это означает, что некоторая программа пишет что-то, когда соединение SSH устанавливается (и это повреждает rsync).

5
21.09.2012, 03:24
2 ответа
$ awk '/from=/ {print $7} /to=/ { print $7}' erroMuitoDoido.txt

Причина:

from=atendimento@dominio.com.br,
              ^^
              ^^
7
27.01.2020, 20:35
  • 1
    : /from=/ || /to=/ { print $7 } –  jw013 20.09.2012, 17:56
  • 2
    Если кто-то имеет from= или to= в их адресе электронной почты у Вас будет та же проблема. Вряд ли, но Вы могли бы также сделать его : from= и : to= сделать ложные положительные стороны еще менее вероятно. –  Jim Paris 20.09.2012, 23:05

Все действия выполняются в порядке, если вход соответствует соответствующему шаблону. Если вход соответствует обоим шаблонам, оба действия выполняются.

Если Вы хотите распечатать поле, соответствует ли оно одному шаблону или другому, объединение два:

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 ключевое слово.

3
27.01.2020, 20:35
  • 1
    Вы записали “привязке соответствие в начале поля”, но все еще соответствуйте против $0. Вы, вероятно, намеревались записать $7~/^(from|to)=/. Поскольку я не уверен, что это всегда будет $7, возможно, / (from|to)=/ было бы лучше. –  manatwork 21.09.2012, 12:08

Теги

Похожие вопросы