AWK打印最后一行的第二列

use*_*259 3 shell awk

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

df --total
Run Code Online (Sandbox Code Playgroud)

我正在使用的命令是:

df --total | awk 'FNR == NF {print $2}'
Run Code Online (Sandbox Code Playgroud)

但它没有做对.还有另一种方法吗?

Joh*_*nck 13

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

df --total | awk 'END {print $2}'
Run Code Online (Sandbox Code Playgroud)


vah*_*bdi 7

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

df --total | tail -1 | awk '{print $2}'
Run Code Online (Sandbox Code Playgroud)

  • @John,我不知道为什么一个额外的过程会降低它的用处.您的环境中的进程是否有某种资源配额?:-) (5认同)

pax*_*blo 7

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

df --total | tail -1l | awk '{print $2}'
Run Code Online (Sandbox Code Playgroud)

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

df --total | awk '{store = $2} END {print store}'
Run Code Online (Sandbox Code Playgroud)

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

df --total | awk 'END {print $2}'
Run Code Online (Sandbox Code Playgroud)