Как читать таблицы, отображаемые после команд в bash - PullRequest
0 голосов
/ 05 августа 2020

Есть ли лучший способ прочитать результаты некоторых 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

Как мне получить бесплатно / Swap, например?

1 Ответ

0 голосов
/ 10 августа 2020

Я предлагаю использовать awk, чтобы получить желаемое значение на выходе.

Чтобы установить переменную $ VMIP со значением vmIP (2-е поле):

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

Чтобы установить переменную $ SWAP_FREE значением Swap free (4-е поле):

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