awk 특정 컬럼 합계 구하기
예: 특정 벤더 장비에 snmpwalk 로 snmp cpu oid 필드만 더하기 sum
snmpwalk -v2c -c public 10.x.x.188 hrProcessorLoad | awk '{sum+=$4} END {print sum/NR}'
snmpwalk -v2c -c public 10.x.x.188 hrProcessorLoad | awk '{sum+=$4} END {if (NR > 0) print sum / NR}'
UserParameter=cpuload[*],snmpwalk -v1 -c public $1 hrProcessorLoad | awk '{sum+=$$4} END {print sum/NR}'
파일 내용중 특정 항목만 더하기
tail -n 11 11302016.ccu.log | awk -F ' ' '{print $6; sum += $4} END {print "sum = ", sum}'
awk -F ' ' '{sum += $5} END {print "total", sum}'
awk '$2 > 30{print $1,$2}' cpu-load.txt
awk 파일 비교 하기
awk 'NR==FNR{c[$2]++;next};c[$2] == 0' filebeat/20170316-sumfile.log ./IP-LIST > filebeat/20170316-offip.log
파일 내용중 2번째 필드가 문자열인것만 출력
awk '{ if ($2!~/^[0-9]+$/) print $0 }' cpu-load.txt
파일 내용중 2번째 필드가 숫자인것만 출력
awk ‘{ if ($2~/^[0-9]+$/) print $0 }’ cpu-load.txt
awk '{ if ($2~/^[0-9]+$/) print $0 }' cpu-load.txt
awk 명령어 조합
예: saltstack 명령어로 cpu가 50% 이상인 서버만 출력
salt -G roles:app status.cpuload --out=txt | awk '$2 > 50{print $1,$2}'
awk 정규표현식
awk 메타문자 | 의미 |
^ | 문자열의 시작과 매칭 |
$ | 문자열의 끝과 매칭 |
. | 문자 한 개와 매칭 |
* | 문자가 없거나 그 이상과 매칭 |
+ | 하나의 문자 도는 그 이상과 매칭 |
[] | 문자를 집합으로 만들고 구성원 중 하나와 일치한다. |
[^] | 문자를 집합으로 만들고 구성원 중 하나와 일치 하지 않을 경우 |
[A-Z] | 문자를 집합으로 만들고 구성원 을 범위 지정 ex) A~Z |
A|B | OR 연산자 A 또는 B |
() | 하위표현식 , 역참조 사용가능 |
& | 검색 문자열에서 검색된 문자열로 대체할 떄 사용 |