sedを使用して大量のSQLクエリログを解析しようとしており、各クエリで結合されているすべてのテーブルの名前を抽出したいと考えています。これが私が試していることです:
echo '[SQL_STMT="SELECT A FROM TABLEA JOIN TABLEB ON SOMETHING JOIN TABLEC ON SOMETHINGELSE WHERE A = 1"]' \
| sed -e 's/SQL_STMT=.*JOIN \([A-Z0-9_]*\) .*\]$/SQL_JOINS="\1"]/g'
ただし、これは次の値のみを返します。
[SQL_JOINS="TABLEC"]
私が見たいのは次のようなものです:
[SQL_JOINS="TABLEB TABLEC"]
任意の数の結合で機能します
では、結合されたすべてのテーブルを取得するように後方参照を構造化するにはどうすればよいですか?