我很难提取文件系统和镶嵌在来自 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 }'
只要挂载点名称的各个部分仅由单个空格分隔,此方法就会起作用 - 多个空格和/或制表符将被压缩为一个空格。
其余字段中都不能有空格。