OS/공통-명령어

[Tips] awk 다양한 예제

투칼론 2017. 12. 17. 08:09
반응형

표준입력에서 1번째와 2번째 컬럼 출력하기

 awk  'print {$1, $3}'



표준입력에서 모든 컬럼 출력하기

 awk  'print {$0}'



test.txt 파일에서 구분자 ':'으로 3번째 컬럼 출력하기

 awk  -F: 'print {$3}'  ./test.txt



데이터타입에 따라 포맷팅해서 출력하기

 echo 123.5 55  hello | awk '{printf "%-10.3f  %d    %s \n" , $1 , $2, $3}'



표준입력에서 문자열 "test"를 포함한 라인 출력하기

 awk  /test/ 



표준입력에서 1번째 컬럼에 문자열 "test"를 포함한 라인 출력하기

 awk  $1 - /test/ 



표준입력에서 1번째 컬럼에 문자열 "test"를 포함하지 않는 라인 출력하기

 awk  $1! - /test/ 



표준입력에서 1개 이상의 컬럼을 가진 라인 출력하기

 awk  'NF > 0'



표준입력에서 짝수 라인은 Even, 홀수 라인은 Odd 출력하기  (if ~ else 예제)

 awk  '{ if ((NR%2)==0) print "Even"; else print "Odd" }'



표준입력에서 문자열 "test"를 포함한 라인 수 출력하기  (BEGIN, END 예제)

 awk  ' BEGIN { print "Count 시작" } /test/ {++cnt} END {print "결과=", cnt }'



Array를 활용하여 Group by로 묶어 합계 구하기

 $ cat  sample.dat가 아래와 같을때,

A  3

B  1

A  2

C  3

B  1

 

$ awk  ' {arr[$1]+=$2} END {for (i in arr) print i, arr[i]}'

B 2
C 3
A 5