Назначение значения поля (позиционной переменной) в пользовательскую переменную в gawk / awk - PullRequest
0 голосов
/ 27 октября 2011

Я создаю переменную с именем size и пытаюсь присвоить ей значение из позиционной переменной gawk. Но это не похоже на работу. В приведенном ниже примере я пытаюсь сохранить значение поля 4 в переменной «size». Когда я печатаю переменный размер, вместо строки выводится вся строка 4.

Как сохранить сохраненное значение в переменной для последующего использования?

prompt>  echo "Live in a big city" | gawk '/Live/ {size=$4; print $size}'

Выводится следующее: Жить в большом городе

Я хотел бы видеть только это:

большой

1 Ответ

2 голосов
/ 27 октября 2011

Не указывайте знак доллара.awk похож на C, а не на shell или perl, где вам не нужна дополнительная пунктуация для разыменования переменной.Вы используете только знак доллара, чтобы получить значение n-го поля в текущей строке.

echo "Live in a big city" | gawk '/Live/ {size=$4; print size}'

Причина, по которой вы выводите всю строку, заключается в следующем: переменной awk size назначаетсязначение big.Затем в выражении print awk разыменовывает переменную size и пытается print $big.Строка "big" интерпретируется как целое число, и, поскольку она не начинается с каких-либо цифр, она обрабатывается как число 0. Таким образом, вы получаете print $0, и, следовательно, полную строку.

...