2017-05-31 45 views
0

我有一个关于sed的问题。用sed操作df输出

输出:

Filesystem    avail 
rpool/ROOT/s10_u11_201704 244719726 

通缉信息:

s10_u11_201704 

我想:

df -b/| sed '1d;s/.*\/\(*\ \)\ .*/\1/g' 

\(*\ \)不起作用。

+1

注意,你可以使用'--output = source'只打印文件系统信息。请参阅[如何在linux df命令中选择特定列](https://stackoverflow.com/a/28809214/1983854)。 – fedorqui

回答

3

使用awk

df -b/|awk -F'/' 'NR>1{split($NF,a," ");print a[1]}' 
s10_u11_201704 

使用sed

df -b/|sed -r '1d;s|(^.*)/([^ ]+).*|\2|g' 
s10_u11_201704 

免责声明:df -b没有任何可用的发行版提供给我。

+0

我想知道,因为我有'df(GNU coreutils)8.21',但没有'-b'选项。 –

+0

我也有没有'-b'标志的'df'。只是模仿OP的理解。 –

+0

我明白了,但RomanPerekhrest的回答是正确的。 –

1

AWK方法:

df --output=source | awk -F'/' '{print $NF}' 

  • --output=source--output[=FIELD_LIST]) - 使用所定义的输出格式由FIELD_LIST

  • -F'/' - 治疗/如字段分隔

  • $NF - 最后一个字段的值