awk로 다음라인을 체크하고 싶습니다.

cdral의 이미지

# cat 1.log
20110513005933 SERVER 111.222.333.444 6 61
20110513005935 CLIENT 111.222.333.444 :0
20110513005935 CLIENT 111.222.333.444 :0
20110513005935 SERVER 111.222.333.444 6 43
20110513005936 CLIENT 111.222.333.444 :0
20110513005937 CLIENT 111.222.333.444 :0
20110513005937 CLIENT 111.222.333.444 :0
20110513005937 CLIENT 111.222.333.444 :0
20110513005937 CLIENT 111.222.333.444 :0
20110513005937 CLIENT 111.222.333.444 :0
20110513005937 SERVER 111.222.333.444 6 69
20110513005939 SERVER 111.222.333.444 6 63

위에 로그파일에서 5번째 항목의 값이 60이하일때 그 다음라인에 4번째 항목이 :0 값이 있는지 체크하고자 합니다.

# awk '{if ( $5 < 60 && getline()=($4=":0") ) }' 1.log
이런식으로 여러조합을 해보았으나 마땅한 해결책이 안나오네요

꼭 $5 < 60 이하일때 다음라인 $4 에 ":0" 가 찍힌로그가 있는지 확인해야됩니다. 힌트좀주세요-
뭐 awk 가 아니어도 됩니다. 한줄명령어로만 가능하면 상관없습니다.

ydhoney의 이미지

cat ./1.log | awk '$5>60{getline;print}' | awk '{if($4==":0") print}'

살짝 이렇게 해 보았습니다. 평소 사용하시는데로 대충 바꿔서 사용하세요 :-)

조금 다른 방식이 필요하시면..대충 어떻게 하는지 눈에 보이실테니까 잘 ㅎㅎ