AWK打印最后一行的第二列

时间:2014-02-23 10:14:39

标签: shell awk

我正在尝试使用AWK发布此命令最后一行的第二行(总磁盘空间):

df --total

我正在使用的命令是:

df --total | awk 'FNR == NF {print $2}'

但它没有做对。 还有其他办法吗?

4 个答案:

答案 0 :(得分:13)

你正在使用awk变量NF,它是字段数。您可能意味着NR,行数,但更容易使用END:

df --total | awk 'END {print $2}'

答案 1 :(得分:7)

您可以先使用tail,然后使用awk

df --total | tail -1 | awk '{print $2}'

答案 2 :(得分:7)

一种方法是使用tail/awk组合,前者只获取最后一行,后者打印第二列:

df --total | tail -1l | awk '{print $2}'

纯粹的awk解决方案是简单地存储每行的第二列并在结尾处打印出来:

df --total | awk '{store = $2} END {print store}'

或者,由于最后一列保留在最后一行的END块中,因此只需:

df --total | awk 'END {print $2}'

答案 3 :(得分:4)

awk没有“这是最后一行”的概念。 sed确实:

df --total | sed -n '$s/[^[:space:]]\+[[:space:]]\+\([[:digit:]]\+\).*/\1/p'