質問
AWKスクリプトで特にAWK(GAWK、MAWKなど)を使用して、フィールド6に「runner__.jpx」を含むすべてのレコードのフィールド9の値を要約したい(下線は2桁の数字0〜9)、フィールド7では「good」です。
サンプルファイル
Feb 14 11:33:16 ringer a[2388]: runner01.jpx good aa 3
Feb 14 11:33:32 ringer a[2388]: runner24.jpx good xx 1
Feb 14 11:33:39 ringer a[1894]: jogger02.jpx good aa 5
Feb 14 11:33:45 ringer a[2388]: runner99.jpx stop cc 1
試みる
どうすればいいですか?次のようなifステートメントを使ってみました。
BEGIN {
sum = 0
}
{
if (($6 == "runner"[0-9][0-9]".jpx") && ($7 == "good"))
sum += $9
}
END {
printf sum
}
フィールドの文字列を一致させるためにifステートメントを使用してこれを行う方法はありますか? if文に正規表現を使用できますか?これを行う他の方法はありますか?ありがとうございます。
答え1
次の作業を行う必要があります。明示的なsは必要ではなく、次のようにモデルif
をawk
操作する暗黙のモードしか必要ありません。
awk '$6 ~ /^runner[0-9][0-9]\.jpx$/ && $7 == "good" {s += $9};
END{print s}' input.file