我想打印awk中倒数第二列或字段。字段的数量是NF变量。我知道我应该能够使用$NF,但我不确定如何使用它。

但这似乎并不奏效:

awk ' { print ( $NF-- )  } '

当前回答

首先递减值,然后打印它

awk ' { print $(--NF)}' file

OR

rev file|cut -d ' ' -f2|rev

其他回答

awk ' { print ( $(NF-1) ) }' file
awk '{print $(NF-1)}'

应该工作

这是最简单的:

 awk '{print $--NF}' 

原来的$NF——没有工作的原因是表达式在递减之前求值,而我的前缀递减是在求值之前执行的。

日期 美国东部时间2022年7月9日星期六11:57:36 date | gawk '$_=$——NF' | mawk '$!——NF = $ NF '

EDT

对克里斯·坎农(Chris Kannon)公认答案的一个小补充:只有在最后一列有第二列时才打印。

(
echo       | awk 'NF && NF-1 { print ( $(NF-1) ) }'
echo 1     | awk 'NF && NF-1 { print ( $(NF-1) ) }'
echo 1 2   | awk 'NF && NF-1 { print ( $(NF-1) ) }'
echo 1 2 3 | awk 'NF && NF-1 { print ( $(NF-1) ) }'
)