堆栈溢出社区您好。
想知道你是否能帮我解决这个问题。
我想获取计算机系统上的可用存储空间并将其导出到变量中。
我知道下面的命令将为我提供系统上的可用存储空间。 导出HOME=
cd;pwd
df -H --output=avail ${HOME}
但它给了我一个 Avail 标题
Avail
891G
我只想将
891G
作为字符串导出到变量中。
我尝试了下面的这个命令,但它不起作用
df -H --output=avail ${HOME} | awk -F"\n" '{print$1}'
有什么想法吗?
如果您知道您将始终寻找第二行中的值:
$ df -H --output=avail ${HOME} | awk 'NR==2'
39G
要删除前导空格,您有几种选择;对当前
awk
想法的一点补充:
$ df -H --output=avail ${HOME} | awk 'NR==2 {print $1}'
39G
然后存储在变量中:
$ size=$(df -H --output=avail ${HOME} | awk 'NR==2 {print $1}')
$ typeset -p size
declare -- size="39G"
awk -F"\n" '{print $1}'
只会打印,而不改变任何内容,因为 GNU
AWK
默认情况下将换行符视为行分隔符,因此行内不能有换行符,因此您将把整行视为单个字段。如果您希望将每一行作为字段并且没有空行,那么您可以通过将行分隔符 (RS
) 设置为空字符串并将字段分隔符 (FS
) 设置为换行符来实现,让 command
输出为
Avail
891G
然后
command | awk 'BEGIN{RS="";FS="\n"}{print $2}'
提供输出
891G
(在 gawk 4.2.1 中测试)
awk 允许您为任意行设置记录号 (NR)。在本例中为第 2 行。一行通常是一条记录。并且输出是隐含的。
awk 'NR==2' intputFile.txt
jot 100 | mawk '_--{exit}_+=NR'
2