질문
AWK 스크립트에서 특별히 AWK(GAWK, MAWK 등)를 사용하여 필드 6에 "runner__.jpx"가 포함된 모든 레코드에 대해 필드 9의 값을 요약하고 싶습니다(밑줄은 두 자리 숫자 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