Не указывайте знак доллара.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
, и, следовательно, полную строку.