LINUX.ORG.RU

Разбить строку на элементы BASH

 


0

2

Сначала мы имели вот такой вывод, из которого я хочу вытянуть названия баз данных:

root@PostgreSQL:/home/maintainer# psql -U dbadmin -p5433 -l
                                      Список баз данных
        Имя        | Владелец | Кодировка | LC_COLLATE  |  LC_CTYPE   |     Права доступа
-------------------+----------+-----------+-------------+-------------+-----------------------
 ds38_kamin55_psql | postgres | UTF8      | ru_RU.UTF-8 | ru_RU.UTF-8 |
 ds71_kamin55_psql | dbadmin  | UTF8      | ru_RU.UTF-8 | ru_RU.UTF-8 |
 ds7_kamin55_psql  | dbadmin  | UTF8      | ru_RU.UTF-8 | ru_RU.UTF-8 |
 postgres          | postgres | UTF8      | ru_RU.UTF-8 | ru_RU.UTF-8 |
 sm                | dbadmin  | UTF8      | ru_RU.UTF-8 | ru_RU.UTF-8 |
 template0         | postgres | UTF8      | ru_RU.UTF-8 | ru_RU.UTF-8 | =c/postgres          +
                   |          |           |             |             | postgres=CTc/postgres
 template1         | postgres | UTF8      | ru_RU.UTF-8 | ru_RU.UTF-8 | =c/postgres          +
                   |          |           |             |             | postgres=CTc/postgres
(7 строк)

Я упростил задачу, и отбросил большую часть ненужной информации, хотя названия служебных баз и нужны, но их можно понимать как программу «максимум»

root@PostgreSQL:/home/maintainer# psql -U dbadmin -p5433 -l | grep psql
 ds38_kamin55_psql | postgres | UTF8      | ru_RU.UTF-8 | ru_RU.UTF-8 |
 ds71_kamin55_psql | dbadmin  | UTF8      | ru_RU.UTF-8 | ru_RU.UTF-8 |
 ds7_kamin55_psql  | dbadmin  | UTF8      | ru_RU.UTF-8 | ru_RU.UTF-8 |

Теперь я не знаю как получить просто


ds38_kamin55_psql
ds71_kamin55_psql
ds7_kamin55_psql

Предыдущий вопрос аСтранный вопрос по bash

Но поскольку там я решал другую задачу, решил завести этот тред



Последнее исправление: Shulman (всего исправлений: 2)

Ответ на: комментарий от anonymous

Получилось!

А если я захочу получить список типа такого?

ds38_kamin55_psql
ds71_kamin55_psql
ds7_kamin55_psql
postgres
sm 
template0
template1

Shulman
() автор топика
Ответ на: комментарий от DonkeyHot

root@PostgreSQL:/home/maintainer# psql -U dbadmin -p 5433 -d pg_database -tc 'select datname from pg_database'
psql: ВАЖНО:  база данных "pg_database" не существует


Shulman
() автор топика

Pure bash:

shopt -s extglob
declare -a fields
while read line; do
  IFS=$'\n' readarray -t fields <<<"${line//*([[:space:]])|*([[:space:]])/$'\n'}"
  echo "${fields[0]}"
done < <(psql -U dbadmin -p5433 -l)
DRVTiny ★★★★★
()
Ответ на: комментарий от Shulman

база данных "pg_database" не существует

И где ошибка?

DonkeyHot ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.