Распечатывает ли awk все, если переменная поля не существует? - PullRequest
0 голосов
/ 16 ноября 2010

Я пытаюсь понять некоторые сценарии, которые я унаследовал, и использую awk. В одном из скриптов есть такие строки:

report=`<make call to Java class that generates a report`
report=`echo $report|awk '{print $5}'`

Отчет, сгенерированный в строке 1, содержит такие данные:

ABC1234:0123456789:ABCDE
ABC4321:9876543210:EDCBA
...

Сгенерированный awk отчет такой же, как и исходный.

В отчете нет 5-го поля, так как нет пробелов, и другой разделитель полей не был определен. Я знаю, что использование $ 0 вернет все поля. Делает ли указание поля, которое не существует, то же самое?

Ответы [ 2 ]

0 голосов
/ 16 ноября 2010

Что-то не так с вашим тестом.

Ожидаемое поведение awk в этом случае - печатать пустую строку для каждой строки ввода, и это то, что я вижу, когда запускаю 1TA или gawk.

0 голосов
/ 16 ноября 2010

Нет:

echo "1 2 3"|awk '{print $5}'

Выше ничего не печатается.Не знаю, почему он ведет себя так, как вы указываете.Если бы вы использовали " вместо ', то он напечатал бы, потому что $ 5 будет расширяться оболочкой, а как написано - не должно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...