当我使用 df -h 时,我得到以下输出:
文件系统大小已使用可用使用率%安装于
/dev/mapper/VolGroup00-LogVol00 59G 2.2G 54G 4% /
/dev/sda1 122M 38M 78M 33% /boot
tmpfs 1.1G 0 1.1G 0%/dev/shm
10.10.0.105:/某路径
11T 8.4T 2.1T 81% /storage4
10.11.0.101:/某路径
15T 8.9T 5.9T 61% /storage1
/dev/mapper/patha 5.0T 255G 4.8T 5% /storage5_vol0
/dev/mapper/pathb 5.0T 195G 4.9T 4% /storage5_vol1
/dev/mapper/pathc 5.0T 608G 4.5T 12% /storage5_vol2
我想编写一个脚本来获取可用性特定存储上的列。
我曾经用过
df -k /storage_name | tail -1 | awk'{print $3}'
但文件系统列可以有值也可以没有值..这会将我的脚本的变量从$3更改为$4。
我如何获得可用性在单个命令行上,即使前面的列没有值?
答案1
只需打开 POSIX 兼容输出(-P)即可为 df:
$ df -Pk /dev/sda1 | tail -n 1 | awk '{print $4}'
这确保了每行的格式相同(长设备名称后没有换行符)。
答案2
对 df 使用 -P 选项,以确保输出是规范化的,并且不会分成多行。
而且,无论如何 - 您也可以随时使用 $(NF-2) 来打印可用列。
答案3
处理 NF 变量(字段数)。例如:
df -k /storage_name|tail -1 |awk 'NF == 6 {打印 $3};NF == 5 {打印 $4}'
答案4
df -k /dev | tail -1 | sed s/"^[^0-9]*"// | awk '{print $3}'
添加 sed 将从行首删除所有非数字字符。如果你的文件系统名称中有数字,你可能需要稍微修改一下