这是我编写的 shell 脚本,用于从“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
我只是将其打印出来,但您可以做任何您想做的事情,例如将它们逐行添加到数组中。