linux awk 명령어 사용법

linux awk 명령어 사용법

리눅스 커맨드라인에서 텍스트를 다루는 다양한 작업을 해야 한다면, 정말 유용한 필수 툴 중 하나가 바로 awk 일 것입니다. 본 포스트에서는 awk란 무엇인지, 어떻게 동작하는지, 어떻게 사용하는지에 대해 소개합니다.

awk 커맨드란?

awk는 텍스트 파일의 내용을 다양한 방법으로 처리 혹은 가공할 수 있게 해주는 툴입니다. 패턴을 지정해서 특정 데이터 검색을 하거나, 추출할 수도 있습니다.

awk의 동작 방식

awk가 어떤 방식으로 동작하는지를 이해하면, 향후 어떤 상황에서 awk를 쓰면 좋겠다고 계획하는데 분명 도움이 될 것입니다. awk는 텍스트 파일을 라인 단위로 읽으면서 검색이든 데이터 추출이든 사용자가 지정한 오퍼레이션을 수행합니다.

기본적인 명령 구조는 아래와 같습니다.

$ awk 'pattern {action}' filename

– pattern: awk를 통해 데이터를 찾을 때의 패턴

– action: 패턴과 일치하는 데이터를 찾았을 때 무엇을 하고자 하는가? ()

– filename: awk로 처리하고 싶은 텍스트 데이터 파일

awk 사용 예

awk의 몇몇 사용 예는 아래와 같습니다.

특정 컬럼 프린트하기

$ awk '{print $1}' file.txt

정형화된 파일 file.txt를 파싱하여, 첫 번째 토큰을 출력해 줍니다.

토큰 숫자는 1부터 시작합니다.

특정 패턴 검색

$ awk '/info/' file.txt

$ awk '/info/ {print}' file.txt

명령어 print를 명시적으로 사용할 수도 있고, 생략할 수도 있습니다.

file.txt로부터 info라는 문자열이 포함된 레코드를 찾아서 출력해 줍니다.

필터 조건 추가

$ awk '{if $1 >= 50} print($3)' file.txt

$ awk '$1 >= 50 {print $3}' file.txt

$ awk '{if ($2 == "Male") print($3)}' file.txt

첫번째 예를 보자면, 1번 토큰 값이 50 이상이면 3번 토큰 값을 출력하라는 뜻입니다.

awk에서는 위와 같이 조건을 부여해서 조건부 필터링을 할 수 있습니다.

내장 함수 사용

$ awk '{length($1), substr($2, 0, 2)}' file.txt

length(), substr() 등과 같은 내장 함수를 사용하여 원하는 값을 추출, 가공할 수도 있습니다.

문자열 포매팅

$ awk -F: '{printf "Name: %s, Department: %s\n", $1, $2}' file.txt

file.txt의 첫번째, 두번째 토큰을 각각 Name:이름, Department:부서 형식으로 출력해 줍니다.


Leave a Reply