Print second last column/field in awk
awk '{print $(NF-1)}'
Should work
Small addition to Chris Kannon' accepted answer: only print if there actually is a second last column.
(
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) ) }'
)
It's simplest:
awk '{print $--NF}'
The reason the original $NF--
didn't work is because the expression is evaluated before the decrement, whereas my prefix decrement is performed before evaluation.