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

방금 인쇄했지만 한 줄씩 배열에 추가하는 등 원하는 대로 할 수 있습니다.

관련 정보