BashのShell変数に格納されているSQL出力を解析する方法

BashのShell変数に格納されているSQL出力を解析する方法

これは、merlinデータベースのreport_dataテーブルからデータを取得するために作成したシェルスクリプトです。

data=$(mysql merlin -BNe 'select * from report_data')
echo "$data"

生成された出力は次のとおりです。

1   1634036113  701 NULL    NULL    monitor-localhost-616569842d586 Service latency 0   1   1   0   OK: service latency min/avg/max = 0.00/0.00/0.20    NULL
2   1634036123  701 NULL    NULL    monitor-localhost-616569842d586 Zombie process  0   1   1   0   OK: 0 zombie process(es)    NULL
3   1634036131  701 NULL    NULL    monitor-localhost-616569842d586 Host orphans    0   1   1   0   OK: Orphaned host checks:   NULL

以下はテーブルの列です。

| id  | timestamp  | event_type | flags | attrib | host_name                       | service_description                 | state | hard | retry | downtime_depth | output                                                                                                                                                                                                                                                                                                                                                                                                           | long_output |

各行を別々のエンティティとして使用し、それを解析したいと思います。

答え1

次のように試すことができます。

#!/bin/bash

mysql merlin -e "SELECT * FROM report_data" | while read id timestamp event_type flags attrib host_name; do
    
#echo "$id | $timestamp | $event_type | $flags | $attrib | $host_name"

array+=("$id | $timestamp | $event_type | $flags | $attrib | $host_name")

done

印刷したばかりですが、1行ずつ配列に追加するなど、好きなようにできます。

関連情報