按列解析 df 输出

按列解析 df 输出

我很难提取文件系统镶嵌在来自 df 输出的列。

$df -Hl

结果是

Filesystem                          Size   Used  Avail Capacity iused      ifree %iused  Mounted on
/dev/disk1                          250G   226G    24G    91% 1576021 4293391258    0%   /
localhost:/BJeZ62GypQBU7sxaZg0qP6   250G   250G     0B   100%       0          0  100%   /Volumes/MobileBackups
/dev/disk2s1                         16G   4.7G    11G    30%       0          0  100%   /Volumes/NO NAME
/dev/disk3s1                         15G   8.0G   7.5G    52%       0          0  100%   /Volumes/FLASH DRIVE

添加列选择

df -Hl | awk '{ print $1"\t"$9 }'

结果是

Filesystem  Mounted
/dev/disk1  /
localhost:/BJeZ62GypQBU7sxaZg0qP6   /Volumes/MobileBackups
/dev/disk2s1    /Volumes/NO
/dev/disk3s1    /Volumes/FLASH

我的镶嵌在列中的文件名中有空格,这会导致结果错误。(即我得到的是“NO”而不是“NO NAME”)如何让列包含完整的安装名称?

答案1

由于带有空格的字段是该行的最后一部分,因此您可以直接抓取从第 9 行到末尾的所有字段。

df -Hl | awk '{ mounted=$9; 
                for (i = 10; i <= NF; i++) mounted = mounted " " $i;
                print $1 "\t" mounted }'

只要挂载点名称的各个部分仅由单个空格分隔,此方法就会起作用 - 多个空格和/或制表符将被压缩为一个空格。

其余字段中都不能有空格。

相关内容