awk는 리눅스에서 텍스트 파일을 처리하고 분석하는 데 사용되는 강력한 프로그래밍 도구입니다. 주로 데이터를 필터링하고 형식화된 출력으로 가공하는 데 유용하며, 행(row)과 열(column) 단위로 데이터를 처리할 수 있습니다. awk는 패턴 매칭과 데이터 조작에 탁월하며, 특히 로그 파일 분석이나 테이블 형식의 데이터 처리에 많이 사용됩니다.
awk 명령어의 기본 사용법
awk 명령어는 다음과 같은 형식으로 사용됩니다:
awk '패턴 {동작}' 파일명
여기서 패턴은 조건을 정의하고, 동작은 해당 조건을 만족하는 경우 실행되는 코드입니다. 기본적으로 awk는 공백을 기준으로 데이터를 열 단위로 구분하며, 각각의 열은 $1, $2, $3 등으로 접근할 수 있습니다.
awk 명령어의 주요 기능
- 데이터 필터링: 특정 조건에 맞는 데이터만 출력할 수 있습니다.
- 열(column) 추출: 파일 내의 특정 열을 쉽게 추출하여 출력할 수 있습니다.
- 패턴 매칭: 정규 표현식을 사용하여 패턴을 매칭하고 데이터를 처리할 수 있습니다.
- 계산 및 가공: 데이터를 연산하거나 조합하여 새로운 데이터를 생성할 수 있습니다.
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는 간단한 명령어로도 매우 복잡한 텍스트 처리 작업을 수행할 수 있는 도구입니다. 특히 대규모 데이터 파일이나 로그 파일을 빠르게 분석해야 할 때 매우 유용하며, 조건에 따라 데이터를 필터링하거나 연산할 수 있어 시스템 관리 및 데이터 분석에 필수적인 도구입니다.
참고사이트
'Linux' 카테고리의 다른 글
[리눅스] tr 명령어 완벽 가이드 사용법(문자 변환/삭제) (0) | 2024.10.15 |
---|---|
[리눅스] uniq 명령어 완벽 가이드 사용법(중복 라인 제거) (0) | 2024.10.14 |
[리눅스] sort 명령어 완벽 가이드 사용법(파일 정렬) (0) | 2024.10.14 |
[리눅스] cut 명령어 완벽 가이드 사용법(특정 문자 추출) (0) | 2024.10.14 |
[리눅스] sed 명령어 완벽 가이드 사용법(파일 내 문자열 변환) (1) | 2024.10.13 |
[리눅스] who 명령어 완벽 가이드 사용법(현재 로그인한 사용자 확인) (0) | 2024.10.12 |
[리눅스] uptime 명령어 완벽 가이드 사용법(시스템 가동 시간) (0) | 2024.10.12 |
[리눅스] last 명령어 완벽 가이드 사용법(로그인 로그 확인) (0) | 2024.10.12 |