awkを使用して重要な単語の後に複数の単語をどのように取得できますか?

awkを使用して重要な単語の後に複数の単語をどのように取得できますか?

次のような複数のクエリを実行するためにデータベースに一度だけ接続したいと思いますSELECT

#!/bin/bash
#Begin Code
query=$(echo "SELECT COUNT(*) from USER_IPTable;
      SELECT User from USER_IPTable;
      SELECT IP_Address from USER_IPTable;" | mysql -u root --password='PASS' MatchingDB)

これにより、次の内容が返されます。

COUNT(*) 3 User user1 user2 user3 IP_Address 192.168.1.17 192.168.1.24 192.168.1.17

次のようにawkを使用してCOUNTを正常に取得しました。

numberOfUsers=$(echo $query| awk ' { print $2 } ')

awk私の質問は、数に基づいて単語の後の各単語と数に基づいて単語の後のUser各単語をどのように取得しますか?IP_Address

ベストアンサー1

変数NFにはフィールド番号が含まれています。変数を使用して、前に $ を追加してフィールドを参照できます ($i == $4、ここで i == 4)。その後、フィールドを繰り返し、フラグ変数を使用して各タイプの目的の値に達したタイミングを確認します。

<your command> | awk '{for (i=1; i<=NF; i++) {if ($i == "User") {type="user"} else if ($i == "IP_Address") {type="ip"}  else if(type == "user") { print "user value = " $i} else if (type == "ip") { print "ip value = " $i}}}'

おすすめ記事