awk
는 강력한 텍스트 처리 도구로, 주로 데이터를 검색하고 조작하는 데 사용된다. awk
는 데이터를 행(row)과 열(column)로 처리하며, 텍스트 파일이나 명령어의 출력을 분석하고 조작할 수 있다. awk
명령어의 기본적인 사용법을 소개한다.
awk
명령어의 기본 문법
awk 'pattern {action}' file
pattern
: 조건식으로, 이 조건을 만족하는 레코드(행)에 대해action
을 수행한다.action
:pattern
과 일치하는 레코드에 대해 수행할 작업이다.{}
로 묶어서 여러 작업을 수행할 수 있다.file
: 입력 파일이다. 파일을 지정하지 않으면 표준 입력을 사용한다.
awk
의 주요 기능
1. 기본 사용법
awk
명령어는 기본적으로 입력 파일을 읽어 각 행에 대해 지정된 pattern
과 action
을 수행한다.
awk '{print $0}' file.txt
print $0
: 각 행 전체를 출력한다.file.txt
: 입력 파일이다.
2. 필드(열) 처리
awk
는 기본적으로 공백이나 탭을 구분자로 하여 필드를 나눈다. $1
, $2
, ...와 같은 방식으로 필드를 참조할 수 있다.
awk '{print $1, $3}' file.txt
$1
: 첫 번째 필드.$3
: 세 번째 필드.- 첫 번째와 세 번째 필드를 출력한다.
3. 패턴 매칭
특정 패턴과 일치하는 행에 대해 작업을 수행할 수 있다.
awk '/pattern/ {print $0}' file.txt
/pattern/
: 주어진 패턴과 일치하는 행을 찾는다.- 패턴과 일치하는 행을 출력한다.
4. 조건식 사용
if
문을 사용하여 조건에 따라 작업을 수행할 수 있다.
awk '{if ($3 > 50) print $1, $3}' file.txt
$3 > 50
: 세 번째 필드가 50보다 큰 경우.- 첫 번째 필드와 세 번째 필드를 출력한다.
5. 내장 변수
awk
에는 다양한 내장 변수가 있다.
NR
: 현재 레코드(행) 번호.NF
: 현재 레코드(행)의 필드(열) 수.FS
: 필드 구분자(기본값은 공백).OFS
: 출력 필드 구분자.
awk '{print NR, $0}' file.txt
NR
: 행 번호.- 행 번호와 행 내용을 출력한다.
6. 필드 구분자 변경
필드 구분자를 변경하여 CSV 파일 등에서 사용할 수 있다.
awk -F ',' '{print $1, $2}' file.csv
-F ','
: 필드 구분자를 콤마(,)로 설정.- 첫 번째 필드와 두 번째 필드를 출력한다.
7. BEGIN 및 END 블록
BEGIN
블록과 END
블록을 사용하여 파일 처리 전후에 작업을 수행할 수 있다.
awk 'BEGIN {print "Start"} {print $1} END {print "End"}' file.txt
BEGIN {print "Start"}
: 파일 처리 전에 "Start"를 출력.{print $1}
: 각 행의 첫 번째 필드를 출력.END {print "End"}
: 파일 처리 후에 "End"를 출력.
8. 변수 사용
awk
내에서 변수를 선언하고 사용할 수 있다.
awk '{sum += $3} END {print "Sum:", sum}' file.txt
sum += $3
: 각 행의 세 번째 필드를 합산하여sum
변수에 저장.END {print "Sum:", sum}
: 파일 처리 후sum
변수를 출력.
9. 함수 사용
awk
는 내장 함수와 사용자 정의 함수를 지원한다. 내장 함수로는 문자열 함수, 수학 함수 등이 있다.
awk '{print toupper($1)}' file.txt
toupper($1)
: 첫 번째 필드를 대문자로 변환하여 출력.
사용자 정의 함수 예:
awk 'function square(x) {return x * x} {print square($1)}' file.txt
function square(x) {return x * x}
:x
의 제곱을 계산하는 함수 정의.- 각 행의 첫 번째 필드를 제곱하여 출력.
엑셀 대신 awk 써보기
awk
명령어는 텍스트 파일이나 데이터 파일을 처리하고 조작하는 데 매우 유용하다. 엑셀에서 수행하는 여러 작업을 awk
명령어를 통해 쉽게 할 수 있다. 다음은 실생활에서 awk
명령어가 쓰일 만한 10개의 예제와 엑셀에서의 유사한 작업을 비교하여 설명한 것이다.
1. 특정 열만 추출하기
awk
예제
awk '{print $2, $5}' data.txt
- 두 번째와 다섯 번째 열을 추출하여 출력한다.
엑셀
- 특정 열을 복사하여 다른 시트나 파일에 붙여넣기.
2. 조건에 맞는 행만 추출하기
awk
예제
awk '$3 > 100 {print $0}' data.txt
- 세 번째 열의 값이 100보다 큰 행만 출력한다.
엑셀
- 필터 기능을 사용하여 조건에 맞는 행을 필터링.
3. 열 합계 계산하기
awk
예제
awk '{sum += $3} END {print sum}' data.txt
- 세 번째 열의 합계를 계산하여 출력한다.
엑셀
SUM
함수를 사용하여 열의 합계를 계산.
4. 특정 열의 평균 계산하기
awk
예제
awk '{sum += $3; count++} END {print sum / count}' data.txt
- 세 번째 열의 평균을 계산하여 출력한다.
엑셀
AVERAGE
함수를 사용하여 열의 평균을 계산.
5. 행 번호 추가하기
awk
예제
awk '{print NR, $0}' data.txt
- 각 행 앞에 행 번호를 추가하여 출력한다.
엑셀
- 새로운 열을 추가하고
ROW
함수를 사용하여 행 번호를 추가.
6. 특정 패턴이 포함된 행 추출하기
awk
예제
awk '/error/ {print $0}' log.txt
- 'error' 문자열이 포함된 행만 출력한다.
엑셀
- 필터 기능을 사용하여 특정 텍스트가 포함된 행을 필터링.
7. 파일 병합하기
awk
예제
awk 'FNR==1 && NR!=1 {next} {print}' file1.txt file2.txt
- 파일들을 병합하고 첫 번째 파일 이후의 헤더를 제거하여 출력한다.
엑셀
- 여러 파일을 하나의 시트로 복사하여 붙여넣기하고, 중복된 헤더를 제거.
8. 특정 열의 최대값 찾기
awk
예제
awk 'BEGIN {max = 0} {if ($3 > max) max = $3} END {print max}' data.txt
- 세 번째 열의 최대값을 찾는다.
엑셀
MAX
함수를 사용하여 열의 최대값을 찾기.
9. 열 데이터 정렬하기
awk
예제
awk '{print $3, $1}' data.txt | sort
- 세 번째 열을 기준으로 데이터를 정렬하여 출력한다.
엑셀
- 정렬 기능을 사용하여 열을 기준으로 데이터 정렬.
10. 열을 기준으로 그룹화하여 합계 계산하기
awk
예제
awk '{arr[$1] += $3} END {for (i in arr) print i, arr[i]}' data.txt
- 첫 번째 열을 기준으로 그룹화하고, 각 그룹의 세 번째 열의 합계를 계산하여 출력한다.
엑셀
- 피벗 테이블을 사용하여 열을 기준으로 데이터 그룹화 및 합계 계산.
마무리
awk
명령어는 텍스트 파일의 데이터를 처리하고 조작하는 데 매우 유용한 도구이다. 기본적인 사용법과 주요 기능을 익히면 다양한 데이터 처리 작업을 효율적으로 수행할 수 있다. 추가적으로 awk
의 공식 문서와 튜토리얼을 참고하여 더 많은 기능과 고급 사용법을 익힐 수 있다.
'언어 > 기타' 카테고리의 다른 글
자바스크립트(JavaScript)와 자바(Java)의 차이점 (0) | 2024.07.12 |
---|---|
grep 명령어 예제와 함께 보는 POSIX 정규식 (regular expression; regex) (0) | 2024.07.12 |
Markdown 마크다운 기본 문법 (0) | 2024.07.11 |