Как получить из таблицы первый и второй столбцы

Есть такая табличка в терминале

                                  List of databases
Name    |    Owner    | Encoding  | Collate | Ctype |   Access privileges
-----------+-------------+-----------+---------+-------+-----------------------
 newdb     | newdb_owner | SQL_ASCII | C       | C     |
 postgres  | postgres    | SQL_ASCII | C       | C     |
 template0 | postgres    | SQL_ASCII | C       | C     | =c/postgres          +
           |             |           |         |       | postgres=CTc/postgres
 template1 | postgres    | SQL_ASCII | C       | C     | postgres=CTc/postgres+
           |             |           |         |       | =c/postgres

Подскажите пожалуйста, как из нее получить первый (Name) и второй (Owner) только значения столбцы с помощью sed.


Ответы (3 шт):

Автор решения: user207200

Если использование sed не является целью:

cut -s -d "|" -f 1-2 --output-delimiter=" " testfile | tail -n +2 | grep -E '\S'

 newdb       newdb_owner 
 postgres    postgres    
 template0   postgres    
 template1   postgres
→ Ссылка
Автор решения: Zt.

с обработкой табличных данных лучше всего справляется awk

awk -F'|' 'NR>3 && !/^ /{print $1,$2}'

 newdb       newdb_owner
 postgres    postgres
 template0   postgres
 template1   postgres
→ Ссылка
Автор решения: Ivan

Используйте возможности самого Postgresql. Достаточно правильно составить SQL запрос, например так:

$ psql -c '
SELECT d.datname as "Name",
pg_catalog.pg_get_userbyid(d.datdba) as "Owner"
FROM pg_catalog.pg_database d;
'
   Name    |  Owner   
-----------+----------
 postgres  | postgres
 template1 | postgres
 template0 | postgres
(3 строки)

для получения искомой информации.

→ Ссылка