【问题标题】:Manipulate df output with sed使用 sed 操作 df 输出
【发布时间】:2017-06-10 11:24:10
【问题描述】:

我有一个关于 sed 的问题。

输出:

Filesystem              avail
rpool/ROOT/s10_u11_201704 244719726

想要的信息:

s10_u11_201704

我试过了:

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

\(*\ \) 不起作用。

【问题讨论】:

标签: sed linux-disk-free


【解决方案1】:

使用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 在我可用的任何发行版中均不可用。

【讨论】:

  • 我想知道,因为我有 df (GNU coreutils) 8.21 但没有 -b 选项。
  • 我也有 df 没有 -b 标志。只是为了让 OP 理解而模仿。
  • -b 是微不足道的。答案的本质是如何提取所需的文本。并且在所有可用的答案中都正确地完成了。我认为一切都是正确的,包括这一点。附带说明一下,某些专有 Linux 版本可能具有 -b 标志。
  • 另外补充一下,这显然有助于 OP 获得他的结果。
【解决方案2】:

awk方法:

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

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

  • -F'/' - 将/ 视为字段分隔符

  • $NF - 最后一个字段值

【讨论】:

    猜你喜欢
    • 2016-06-15
    • 2013-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-29
    • 2015-07-04
    • 1970-01-01
    相关资源
    最近更新 更多