【问题标题】:How to strip output of grep?如何剥离grep的输出?
【发布时间】:2017-08-08 22:47:57
【问题描述】:

我正在编写一个脚本,它利用 salt-cli (SaltStack) 以及通用命令行参数来生成一个简单的基于 HTML 的表格,其中概述了我们所有服务器的硬件规格和软件版本。

听起来很简单,但我唯一的挑战是剥离我的命令输出,以便它们可以在表格中很好地呈现(例如,一个单词/数字而不是整个输出)。

我尚未有效剥离的最新挑战是简单的 'df -Ph.到目前为止,我已经把它归结为:

'df -Ph /'

我的输出:

 Filesystem                        Size  Used Avail Use% Mounted on
/dev/mapper/vhfhuffu               50G  8.0G   39G  18% /

我希望它只显示每台服务器的可用信息,我找不到可靠的方法来为永远的 Unix 服务器执行此操作。

【问题讨论】:

  • 到底是什么问题?只需在上面总结可能的不同文件系统的示例中提取39G?这与 grep 有什么关系?
  • 因为我需要找到一种方法来查找每台机器的“可用”总和,所以我在 15 台服务器上运行此命令。 @SergeBallesta

标签: linux grep strip linux-disk-free


【解决方案1】:

tailcut 应该足够了:

 df -Ph / | tail +2 | cut -f4 -w

应该给你根文件系统的文件系统大小。

【讨论】:

  • @jto:我的错。我忘了控制实际的 Linux 手册页,而且我的 BSD 系统上的 -P 选项不同...
【解决方案2】:

另一种简单的方法是组合tail -n 1 以获取最后一行并将其传递给听起来像您想要的grep '{print $4}'. This will extract the39G` 值,例如

$ df -Ph / | tail -n 1 | awk '{print $4}'
39G

如果您要求和是其他数字,请告诉我。

【讨论】:

  • 我最终使用了类似于这种方法的东西:df -Ph / | grep / | awk '{ print $4}',我现在只是在努力实际运行这个命令,因为我必须通过 salt-cli 运行它,即 salt '*' cmd.run 'df -Ph / | grep / | awk '{ print $4}'',它不喜欢 print 命令以 ' 结尾的事实以及 salt-cli 语法,我该如何解决这个问题? @David C. Rankin
  • 我很好奇。这是我第一次听说salt-cli。是我没听说过的新 shell,还是更像 PowerShell windows 的东西?
  • 它是一个远程执行和配置管理工具,具有类似于 aws-cli 的命令行功能
  • 语法如下: salt '' cmd.run '' 我的问题是我的命令使用 ' ' 和 salt-cli 语法,所以它没有喜欢它并抛出错误
  • 你试过转义引用吗(但这可能会让awk胃灼热。我会谷歌一下,看看是否有任何与引用相关的盐弹出。
【解决方案3】:

您可以使用--output 选项提取所需的列值:

df -h --output=avail | tail -n +2

【讨论】:

    【解决方案4】:

    我最终选择了这个,因为我需要通过 Salt 从脚本运行此命令,该脚本需要 '' 围绕 cmd.run

    df -Ph / | grep / | awk '"'"'{ print $4}'"'"''

    丑陋,但它是唯一适用于这种小众案例的东西

    【讨论】:

      猜你喜欢
      • 2011-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多