【问题标题】:how to extract the remaining memory from free using awk?如何使用awk从空闲中提取剩余内存?
【发布时间】:2013-08-19 18:06:02
【问题描述】:

我需要从输出 free 中提取可用内存,我想我会使用 awk 并想出了类似 free | awk '{print $4}' 的东西。 这给了我这样的输出:

$ free | awk '{print $4}'
shared
365296
1273812
3931364

注意,标题分享不是这些号码的标题,号码来自免费(/usr/bin/free第一栏没有标题,所以免费号码出现在第四栏报告的标题来自 5 号的列)。但是,有了这个,我如何只返回第二行?我暂时对其余的不感兴趣。

【问题讨论】:

    标签: bash memory awk free-command


    【解决方案1】:
    free | awk 'NR==2 {print $4}'
    

    NR,是 ROW/行号

    【讨论】:

    • +1 但在 $4 之后添加 ;exit 因为 OP 只想要第二行,而不是第二行和后续行。
    • 在这种情况下 ;exit 不应该是多余的吗?上面的命令只会打印第二行;注意NR==2.
    • 它会产生正确的输出,只是效率低下,因为它会在第二行之后继续解析输入的其余部分。我不知道free 可以产生多少行输出,所以这可能是也可能不是问题。
    • 大多数 linux 系统在输入free 时显示大约 4 行,所以这里不会丢失太多。
    • 好的,我在 Solaris 和 cygwin 上,没有一个名为 free 的命令,所以我不知道它输出什么。
    【解决方案2】:

    我自己想通了,可以使用:

    $ free | awk '{print $4}'| head -2| tail -1
    

    【讨论】:

    • -1 用于发布您自己问题的答案,而不是用您对答案的最佳尝试来更新您的问题并要求更好的东西,或者如果您认为您的答案是最适合您的答案,则只是删除您的问题你。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-20
    • 1970-01-01
    • 2020-01-11
    • 2014-07-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多