如何在 Bash 中解析存储在 Shell 变量中的 SQL 输出

如何在 Bash 中解析存储在 Shell 变量中的 SQL 输出

这是我编写的 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

我只是将其打印出来,但您可以做任何您想做的事情,例如将它们逐行添加到数组中。

相关内容