【问题标题】:grab the 3rd to the last column [duplicate]抓住第三列到最后一列[重复]
【发布时间】:2015-10-23 07:18:11
【问题描述】:

我试图在“df -m”命令中获取第三列到最后一列,但它似乎不起作用。好吧,它对一个有效,对另一个无效。部分原因是我们使用 LVM 的一个挂载点,而另一个我们使用标准 linux 挂载...

但我需要始终访问第 3 列到最后一列(可用空间),这样我才能确保我的脚本正常工作...如何实现或我做错了什么?

hostname:oraSID 292> df -m /oracle/SID/logs/
Filesystem     1M-blocks  Used Available Use% Mounted on
/dev/xvdf           5040  1139      3646  24% /oracle/SID/logs
hostname:oraSID 293>
hostname:oraSID 293> df -m /oracle/SID/sapdata6/
Filesystem           1M-blocks   Used Available Use% Mounted on
/dev/mapper/grp1-log_vsap1
                        856743 800202     13022  99% /oracle/SID/sapdata6
hostname:oraSID 294>
hostname:oraSID 294>
hostname:oraSID 295> df -m /oracle/SID/logs/ | awk '{ field = $(NF-2) }; END{ print field }'
3646
hostname:oraSID 296>
hostname:oraSID 296> df -m /oracle/SID/sapdata6/ | awk '{ field = $(NF-2) }; END{ print field }'
awk: (FILENAME=- FNR=2) fatal: attempt to access field -1
hostname:oraSID 297>
hostname:oraSID 297>

【问题讨论】:

    标签: linux shell awk gawk


    【解决方案1】:

    使用 --output 选项可能更容易:

    df -m --output=avail
    

    【讨论】:

    • 我不认为这是一个有效的 cmd,至少在 Redhat 6 上不是...我收到错误“df: unrecognized option '--output=used'”
    • @maxscalf 你还能检查 df --help 或 man df 是否有类似的选项?
    • @maxscalf 是的,它似乎特定于我的“发行版”(我使用的是 cygwin)。我正在研究 sed 正则表达式。顺便说一句,我认为您的解决方案由于可能的换行而不起作用。
    【解决方案2】:

    这适用于我的 Ubuntu 系统:

    df -m | awk -F "\t" 'NR == 1 {print "Available"} NR > 1 {print $(NF-2)}'
    

    “Mounted on”中的空格将其丢弃,所以我明确打印出来。

    【讨论】:

      【解决方案3】:

      我找到了答案,为了保持我的格式相同,我使用以下选项..so 似乎 df -P 保持格式相同...

      -P, --portability 使用 POSIX 输出格式

      【讨论】:

      • 这不会从任何东西中选择倒数第三列,
      猜你喜欢
      • 2010-12-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-12
      相关资源
      最近更新 更多