Linuxpia/Linux 명령어

[리눅스 명령어] 특정 패턴 문자 처리, awk

Linuxpia4U 2023. 7. 7. 04:56
반응형
더보기

특정 패턴의 문자를 골라내거나 처리하는 언어입니다. 'awk'는 1977년 Bell 연구소의 Alfred v. Aho' Peter, j. Wenberger와 Brian W. Kernighan에 의해서 만들어졌습니다. 이 세 사람의 이름을 따서 'awk'라고 명명됐습니다.

 

리눅스나 유닉스 시스템에서 주로 사용되며, 데이터를 처리하고 생성하는데 특히 유용합니다.

 

awk는 텍스트 파일 내에서 특정 패턴을 찾고, 일치하는 각 라인에 대해 특정 액션을 수행하도록 설계되었습니다. 이는 파일로부터 특정 필드를 추출하거나 텍스트 데이터를 변환하는 등의 작업에 특히 유용합니다. 'awk'는 전체적으로 자체 프로그래밍 언어와 유사합니다. 단순한 명령부터 복잡한 처리 프로그램까지 작성이 가능합니다.

서식

awk '/pattern/ {action}' filename

 

위의 경우, 'pattern'은 찾을 텍스트 패턴을 나타내며, 'action'은 패턴이 일치하는 각 라인에 대해 수행할 작업을 나타냅니다. 'filename'은 이러한 패턴 검색 및 액션을 수행할 파일의 이름입니다.

 

예를 들어, 다음 'awk' 명령은 파일 'file.txt'의 모든 라인 중에서 문자열 'Google'을 포함하는 라인을 출력합니다.

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

'/Google/'는 찾을 패턴이고 '{print $0}'는 패턴이 일치하는 각 라인 출력 액션

'$0'는 awk에서 현재 라인의 전체를 나타내는 변수입니다. 이와 같은 방식으로, 리눅스 명령어 'awk'는 텍스트 처리 작업을 수행할 때 매우 유용하게 사용될 수 있습니다.

명령어 위치

/usr/bin/awk

사용법

awk는 프로그램 가능한 텍스트 처리 유틸리티로서 입력 줄을 스캔하여 특정한 조건을 만족하는 모든 줄들에 대해 작업을 수행합니다.

1. 텍스트 파일에서 특정 필드(열) 출력: 'awk'는 기본적으로 공백이나 탭으로 구분된 필드를 가진 텍스트 데이터를 처리하는 유용합니다. 다음 명령은 파일 'file.txt'의 각 라인에서 첫 번째 필드만 출력합니다. $1은 각 라인의 첫 번째 필드를 나타냅니다.

awk '{print $1}' file.txt

2. 여러 필드 출력: 두 번째와 세 번째 필드를 출력하려면 다음과 같이 할 수 있습니다.

awk '{print $2, $3}' file.txt

3. 패턴과 일치하는 라인 수 계산: 특정 패턴과 일치하는 라인 수를 계산하려면, 다음과 같이 'awk'를 사용합니다. 아래의 경우 '/pattern/'이 일치하는 각 라인마다 'count' 변수가 증가하고, 파일의 끝에 도달했을 때 최종 카운트가 출력됩니다.

awk '/pattern/ {count++} END {print count}' file.txt

4. 특정 필드의 합계 또는 평균 계산: 'awk'는 특정 필드에 대한 합계나 평균을 계산하는 데도 사용될 수 있습니다. 예를 들어, 다음 명령은 파일 'file.txt'의 각 라인에서 첫 번째 필드의 값을 모두 더합니다.

awk '{sum += $1} END {print sum}' file.txt

5. 평균을 계산하려면 라인 수도 함께 추적합니다.

awk '{sum += $1; count++} END {print sum / count}' file.txt

정리

'awk'는 텍스트 처리를 위한 리눅스 유틸리티로, 텍스트 파일에서 특정 패턴을 찾고, 해당 패턴이 일치하는 라인에 대해 동작을 수행합니다. 기본 형식은 `awk '/pattern/ {action}' filename`입니다. 필드 추출, 패턴 일치 라인 수 계산, 특정 필드의 합계 및 평균 계산 등 다양한 작업에 사용됩니다.

 

 

 

 

 

반응형