grep
성공 플래그 S로 처리하고 있습니다. $ 11은 서비스 유형이고 $ 12는 S (성공) 또는 F (실패)이며 경과 시간은 $ 14입니다. 명령 아래 나는 평균 경과 시간이 있습니다.Awk 명령은 로그에서 최대 최소 값을 인쇄합니다.
bash-3.2$ grep 'EXSTAT|' ivrbroker.log | grep '|F|' |
> /usr/xpg4/bin/awk -F"|" '{a[$11]++;c[$11]+=$14}
> END{for(b in a){print b"," a[b]","c[b]/a[b]}}'
QCPE,2,276.5
bash-3.2$ grep 'EXSTAT|' ivrbroker.log|grep '|F|'
EXSTAT|IVR|2014|11|17|14|43|57|1086|SRQCPE952|QCPE|F|100|349
EXSTAT|IVR|2014|11|17|15|35|51|1092|SRQCPE741|QCPE|F|100|204
하지만 이제 최대 경과 시간과 최소 경과 시간을 찾고 있습니다.
QCPE, 2,276.5,349,204
bash-3.2$ grep '|F|' ivrbroker.log
EXSTAT|IVR|2014|11|17|14|43|57|1086|SRQCPE952|QCPE|F|100|349
EXSTAT|IVR|2014|11|17|15|35|51|1092|SRQCPE741|QCPE|F|100|204
bash-3.2$ awk -F'|' 'BEGIN { OFS="," }
/EXSTAT\|/ && /\|F\|/ { a[$11]++; c[$11] += $14;
if (a[$11]==1) { max[$11]=$14; min[$11]=$14; }
if($14 > max[$11]) max[$11]=$14; if($14 < min[$11]) min[$11]=$14; }
END { for(b in a) print b, a[b], c[b]/a[b], max[b], min[b] }' ivrbroker.log
,204,2,0,349
bash-3.2$ /usr/xpg4/bin/awk -F'|' 'BEGIN { OFS="," }
/EXSTAT\|/ && /\|F\|/ { a[$11]++; c[$11] += $14;
if (a[$11]==1) { max[$11]=$14; min[$11]=$14; }
if($14 > max[$11]) max[$11]=$14; if($14 < min[$11]) min[$11]=$14; }
END { for(b in a) print b, a[b], c[b]/a[b], max[b], min[b] }' ivrbroker.log
,204,2,276.5,349
bash-3.2$
'/ usr/xpg4/bin/awk' 경로는 리눅스에서 전혀 보이지 않는 것처럼 보입니다. 태그 [tag : linux]가 올바르지 않습니까? 그렇다면 어떤 플랫폼을 사용하고 있습니까? – tripleee
bash-3.2 $ uname -a SunOS utibcouat1 5.10 Generic_150400-13 sun4u sparc SUNW, Sun-Fire-V440 OS는 sun solaris 5.10입니다. – Guru
Linux에서'sawk '에 쉽게 액세스 할 수 없습니다. 'gawk'로 전환 할 수 있다면 나머지 호환성 문제를 고쳐야한다고 생각합니다. – tripleee