如何用awk提取df命令输出的第二行可用空间值并赋值给变量
解决思路
这里有几种简单的方法可以实现你的需求:
方法1:用tail提取最后一行
直接取df输出的第二行(也就是数据行):
available_space=$(df -H --output=avail "${HOME}" | tail -n 1)
tail -n 1会只保留输出的最后一行,刚好跳过表头。
方法2:用awk跳过表头行
修正你之前的awk命令,通过记录号NR跳过第一行:
available_space=$(df -H --output=avail "${HOME}" | awk 'NR > 1')
NR是awk内置变量,表示当前处理的行号,NR>1就会只打印第二行及以后的内容,这里刚好只有第二行数据。
方法3:用df自带选项隐藏表头
如果你的系统是GNU环境(比如大多数Linux发行版),df支持--no-header选项直接去掉表头:
available_space=$(df -H --output=avail --no-header "${HOME}")
这种方式不需要额外的管道工具,更简洁高效。
为什么你之前的awk命令没用?
你写的awk -F"\n" '{print$1}'是把整个输入作为一个字段(因为用换行符做分隔符),所以print $1会输出所有内容,自然包含表头。awk默认就是按行处理的,不需要指定换行符作为分隔符,直接用行号过滤就好。
内容的提问来源于stack exchange,提问作者user19557344
相关产品推荐
相关产品推荐

