Linux

[리눅스] awk 명령어 완벽 가이드 사용법(패턴 기반 텍스트 처리)

인생아 2024. 10. 14. 10:06
반응형

awk는 리눅스에서 텍스트 파일을 처리하고 분석하는 데 사용되는 강력한 프로그래밍 도구입니다. 주로 데이터를 필터링하고 형식화된 출력으로 가공하는 데 유용하며, 행(row)열(column) 단위로 데이터를 처리할 수 있습니다. awk는 패턴 매칭데이터 조작에 탁월하며, 특히 로그 파일 분석이나 테이블 형식의 데이터 처리에 많이 사용됩니다.

awk 명령어의 기본 사용법

awk 명령어는 다음과 같은 형식으로 사용됩니다:

awk '패턴 {동작}' 파일명

여기서 패턴은 조건을 정의하고, 동작은 해당 조건을 만족하는 경우 실행되는 코드입니다. 기본적으로 awk는 공백을 기준으로 데이터를 단위로 구분하며, 각각의 열은 $1, $2, $3 등으로 접근할 수 있습니다.

awk 명령어의 주요 기능

  1. 데이터 필터링: 특정 조건에 맞는 데이터만 출력할 수 있습니다.
  2. 열(column) 추출: 파일 내의 특정 열을 쉽게 추출하여 출력할 수 있습니다.
  3. 패턴 매칭: 정규 표현식을 사용하여 패턴을 매칭하고 데이터를 처리할 수 있습니다.
  4. 계산 및 가공: 데이터를 연산하거나 조합하여 새로운 데이터를 생성할 수 있습니다.

awk 명령어 사용 예시

기본 사용법: 특정 열 출력

user@linux:~/documents$ awk '{print $1}' example.txt

이 명령어는 example.txt 파일의 첫 번째 열을 출력합니다.

apple
banana
cherry

조건을 사용한 필터링

user@linux:~/documents$ awk '$2 > 50 {print $1, $2}' data.txt

이 명령어는 data.txt 파일의 두 번째 열의 값이 50보다 큰 행에서 첫 번째 열과 두 번째 열을 출력합니다.

John  55
Alice  75

필드 구분자 변경 (-F 옵션)

awk는 기본적으로 공백을 필드 구분자로 사용하지만, -F 옵션을 사용하여 다른 구분자를 지정할 수 있습니다. 예를 들어, **쉼표(,)**로 구분된 CSV 파일에서 열을 추출할 때 유용합니다.

user@linux:~/documents$ awk -F ',' '{print $1, $3}' sample.csv

이 명령어는 쉼표로 구분된 sample.csv 파일의 첫 번째 열과 세 번째 열을 출력합니다.

apple 100
banana 200

정규 표현식을 사용한 패턴 매칭

user@linux:~/documents$ awk '/^A/ {print $0}' names.txt

이 명령어는 names.txt 파일에서 A로 시작하는 모든 행을 출력합니다.

Alice
Andrew

산술 연산 및 평균 계산

user@linux:~/documents$ awk '{sum += $2} END {print "Total:", sum}' data.txt

이 명령어는 data.txt 파일에서 두 번째 열의 값을 모두 더한 후 총합을 출력합니다.

Total: 230

조건문과 if-else 사용

awk에서는 if-else 문을 사용하여 조건에 따라 데이터를 다르게 처리할 수 있습니다.

user@linux:~/documents$ awk '{if ($2 > 50) print $1 " passed"; else print $1 " failed"}' scores.txt

이 명령어는 scores.txt 파일에서 두 번째 열의 값이 50 이상이면 passed, 그렇지 않으면 failed라고 표시합니다.

John passed
Alice passed
Bob failed

awk 명령어의 유용성

awk는 간단한 명령어로도 매우 복잡한 텍스트 처리 작업을 수행할 수 있는 도구입니다. 특히 대규모 데이터 파일이나 로그 파일을 빠르게 분석해야 할 때 매우 유용하며, 조건에 따라 데이터를 필터링하거나 연산할 수 있어 시스템 관리데이터 분석에 필수적인 도구입니다.

참고사이트

반응형