awkでシェル変数を使う

awkでシェル変数を使う

awkawkでシェル変数を使う

アクセスログから特定のステータスのログを抜き出す簡易的なスクリプトを作っていたのですが、awk の中でシェル変数を使う機会があったので備忘録として残しておきます。今まで使う機会なかったのですが少しハマりました。

結果としては、awk はシングルクォートに囲まれたところを解析しようとするので、シェル変数の部分はシングルクォートから外してあげればシェル変数として扱ってくれるということです。awk 内に普通にシェル変数を定義すると awk で解釈できずに syntax error が出ます。下の例だと、awk コマンドの ${s} の部分がシェル変数です。

#!/bin/sh

HTTP_STATUS="403 404 500"

for s in ${HTTP_STATUS}; do
    echo ${s};
    awk '($9 == '${s}'){print $0}' access_log
done

exit 0;

最終更新日:

関連記事

人気記事

新着情報