awk 사용법

awk는 텍스트 데이터를 처리하고 특정 패턴을 가진 라인을 찾거나 원하는 형식으로 출력하는 데 사용되는 강력한 툴이다. awk는 특히 리눅스 및 UNIX 시스템에서 널리 사용되며, 명령줄 환경에서 쉽게 실행할 수 있다. 이 글에서는 awk 사용법에 대해 알아본다.

awk 기본 문법

awk 기본 형식과 옵션은 아래와 같다.

awk [OPTION...] [awk program] [ARGUMENT...]
  • OPTION
    • -F : 필드 구분자 지정
    • -f : awk program 파일 경로 지정
    • -v : awk program에서 사용될 특정 variable 값 지정
  • awk program
    • -f 옵션이 사용되지 않은 경우, awk가 실행할 awk program 코드 지정
  • ARGUMENT
    • 입력 파일 지정 또는 variable 값 지정

awk program

awk 기본 형식에서 awk program은 ”(single quotation marks) 사이에 작성하며, 패턴-액션 쌍을 사용한다.

'pattern { action }'
  • pattern: 패턴을 정의. 패턴에 일치하는 라인에 대해서만 액션을 수행한다.
  • action: 패턴에 일치하는 라인에 대해 실행할 명령을 정의한다.

결국 전체적인 awk 명령어 기본 형식은 다음과 같다.

awk [OPTION...] 'pattern { action }' [ARGUMENT...]

따라서, awk 를 사용하는 작업은 이 'pattern { action }' 을 어떻게 작성하느냐가 대부분을 차지한다.

BEGIN 과 END 사용

pattern 중에 BEGINEND를 사용할 수 있는데, BEGIN은 첫번째 레코드를 처리하기 전에 실행할 action을 지정하고, END는 반대로 모든 레코드를 처리한 다음 실행할 action을 지정한다.

awk 'BEGIN { print "TITLE : Print value"} {print $1, $2} END {print "Finished"}' file.txt

예제

파일에서 특정 열 출력

awk '{ print $1 }' data.txt

이 명령어는 data.txt 파일의 각 라인에서 첫 번째 열을 출력한다.

특정 조건을 만족하는 라인 출력

awk '$3 > 50 { print $1, $3 }' data.txt

이 명령어는 data.txt 파일의 각 라인에서 세 번째 열이 50보다 큰 경우 첫 번째와 세 번째 열을 출력한다.

특정 패턴이 들어있는 라인 출력

awk '/pattern/ { print }' data.txt

이 명령어는 data.txt 파일의 각 라인에서 ‘pattern’이라는 문자열이 포함된 경우 해당 라인을 출력한다.

특정 필드들의 합 구하기

awk '{sum += $3} END { print sum }' data.txt

이 명령어는 data.txt 파일의 세번째 열들의 값을 sum에 더하고, 모든 레코드를 다 처리한 다음 sum 값을 출력한다.

필드 구분 문자 지정하기

awk -F ':' '{ print $1 }' data.txt

이 명령어는 data.txt 파일의 각 레코드를 ‘:‘ 구분자로 구분해서 첫번째 열 값들을 출력한다.

특정 레코드만 출력하기

awk 'NR == 2 { print $0 }' data.txt

이 명령어는 data.txt 파일 레코드 중 NR==2 즉, 짝수 줄의 레코드를 출력한다.

참고

답글 남기기