如何使用awk仅获取第二行

问题描述 投票:0回答:4

堆栈溢出社区您好。

想知道你是否能帮我解决这个问题。

我想获取计算机系统上的可用存储空间并将其导出到变量中。

我知道下面的命令将为我提供系统上的可用存储空间。 导出HOME=

cd;pwd
df -H --output=avail ${HOME}

但它给了我一个 Avail 标题

Avail
891G

我只想将

891G
作为字符串导出到变量中。

我尝试了下面的这个命令,但它不起作用

df -H --output=avail ${HOME} | awk -F"\n" '{print$1}'

有什么想法吗?

awk
4个回答
2
投票

如果您知道您将始终寻找第二行中的值:

$ 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"

0
投票
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 中测试)


0
投票

awk 允许您为任意行设置记录号 (NR)。在本例中为第 2 行。一行通常是一条记录。并且输出是隐含的。

awk 'NR==2' intputFile.txt

-2
投票
jot 100 | mawk '_--{exit}_+=NR'

2
© www.soinside.com 2019 - 2024. All rights reserved.