シェルスクリプト出力から特定の値を抽出する

シェルスクリプト出力から特定の値を抽出する

以下のようにpostgresデータベースの出力があります。

datname | size ---- template1 | 6314 kB template0 | 6201 kB postgres | 7938 kB misago |
6370 kB (4 rows)

出力には6314、6201、および7938の値のみが必要です。どうすればいいですか?

awk、grep、または sed が優先されます。

ベストアンサー1

データベースクエリの出力は次のとおりですdb.out

grep -oE '[0-9]+ kB' db.out

これは生産します

6314 kB
6201 kB
7938 kB
6370 kB

␣kB次に、最後の行を削除して削除します。

$ grep -oE '[0-9]+ kB' db.out | sed -e 's/ kB//' -e '$d'
6314
6201
7938

1行に3つの数字がある行に表示するには、以下を渡しますpaste

$ grep -oE '[0-9]+ kB' db.out | sed -e 's/ kB//' -e '$d' | paste - - -
6314    6201    7938

おすすめ記事