如何使用awk打印最后两列

veh*_*zzz 100 awk

我想要的只是打印的最后两列.

cod*_*ict 180

您可以使用NF设置为输入记录中的字段总数的变量:

awk '{print $(NF-1),"\t",$NF}' file
Run Code Online (Sandbox Code Playgroud)

这假设您至少有2个字段.

  • 现在你正在打印"field-OFS-tab-OFS-field".它应该是'awk'{print $(NF-1)"\ t"$ NF}'file`或'awk'{print $(NF-1),$ NF}'file`或'awk'BEGIN {OFS ="\ t"} {print $(NF-1),$ NF}'file`. (16认同)

jim*_*ara 11

awk '{print $NF-1, $NF}'  inputfile
Run Code Online (Sandbox Code Playgroud)

注意:仅当至少存在两列时,此方法才有效.在有一列的记录中,你会得到一个虚假的"-1 column1"

  • 你可能被欺骗认为它有效,因为你试过`echo 1 2 3 | awk ......` 每个'awk`实现中`$ NF-1`是`($ NF) - 1`. (5认同)
  • 试试看.它确实工作Solaris 9 awk&nawk.另一种选择是$(NF-1) (3认同)

小智 6

@jim麦克纳马拉:尝试使用括号周围NF,即 $(NF-1)$(NF),而不是$NF-1$NF(在Mac OS X 10.6.8适用于FreeBSD的awkgawk).

echo '
1 2
2 3
one
one two three
' | gawk '{if (NF >= 2) print $(NF-1), $(NF);}'

# output:
# 1 2
# 2 3
# two three
Run Code Online (Sandbox Code Playgroud)