如何剥离grep的输出?

How to strip output of grep?

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

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

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

'df -Ph /'

我的输出:

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

我希望它只显示每个服务器的可用资源,我找不到对所有 Unix 服务器执行此操作的可靠方法。

tailcut 在这里应该足够了:

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

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

另一种简单的方法是结合 tail -n 1 得到最后一行,然后将它传递给听起来像你想要的 grep '{print }'. This will extract the39G` 值,例如

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

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

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

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

我最终选择了这个,因为我需要通过 Salt 从脚本中 运行 这个命令,它需要 cmd.run

周围的 ''

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

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