首页 > 解决方案 > 读取bash中命令后显示的表的方法是什么

问题描述

如果我需要一些特定的行和列,是否有最好的方法来读取一些显示为表格的 bash 命令的结果?例如,当我运行这一行时:

gcloud app instances describe $instance_name --service=postprocessing --version=$instance_version

我明白了:

startTime: '2020-08-03T16:29:29.142Z'
vmDebugEnabled: true
vmIp: xx.xx.xxx.xxx
vmStatus: RUNNING

我只需要这张表中的 IP,我该如何获得它?我发现只有一种方法,将整个输出保存为数组,然后获取它的第 -3 个元素。我想知道是否有更好的方法?同样对于具有更多“列”且具有标题的其他类型的输出,例如:

mst@cloudshell:~ (me)$ free -m
              total        used        free      shared  buff/cache   available
Mem:           1995         469         279           0        1247        1379
Swap:           767           0         767

例如,我如何获得免费/交换?

标签: bashcommand-line-interface

解决方案


我建议使用awk在输出中获取您想要的值。

vmIP使用值(第二个字段)设置 $VMIP 变量:

VMIP=$(gcloud app ... | awk '/vmIp:/ {print $2}' )

Swap free使用值(第 4 个字段)设置 $SWAP_FREE 变量:

SWAP_FREE=$(free -m | awk '/Swap:/ {print $4}')

推荐阅读