[〜#〜]問題[〜#〜]
特にAWKスクリプトでAWK(GAWK、MAWKなど)を使用して、フィールド6に「runner __。jpx」(アンダースコアは2桁の0〜9のプレースホルダー)を含むすべてのレコードのフィールド9の値を合計したいと思います。そしてFIELD7では「良い」。
サンプルファイル
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ステートメント内で正規表現を使用できますか?これを行うための代替方法は何ですか?ありがとう。
以下はその仕事をするはずです。明示的なif
sは必要なく、awk
の暗黙的なパターンアクションモデルを使用するだけであることに注意してください。
awk '$6 ~ /^runner[0-9][0-9]\.jpx$/ && $7 == "good" {s += $9};
END{print s}' input.file