AWK는 강력한 텍스트 처리 도구로, 데이터 분석 및 처리에 있어 매우 유용한 언어입니다. 이 블로그 포스트에서는 AWK의 변수와 연산자에 대해 깊이 있게 살펴보며, 이를 통해 데이터 처리의 효율성을 높이는 방법을 알아보겠습니다.
변수의 개념
변수는 데이터를 저장하는 공간으로, 프로그램 내에서 값을 저장하고 사용할 수 있게 해줍니다. AWK에서는 두 가지 주요 종류의 변수가 있습니다:
- 사용자 정의 변수: 사용자가 직접 생성하여 사용하는 변수입니다. 이러한 변수는 사용자가 필요에 따라 이름을 지정하고, 원하는 값을 할당하여 사용할 수 있습니다. 예를 들어, 학생의 이름이나 점수와 같은 정보를 저장하는 데 유용합니다.
- 내장 변수: AWK가 자동으로 제공하는 특별한 변수들로, 특정 기능을 수행합니다. 이 변수들은 AWK의 동작을 제어하거나, 현재 처리 중인 데이터에 대한 정보를 제공합니다.
예시:
BEGIN {
name = "홍길동" # 사용자 정의 변수
age = 30 # 또 다른 사용자 정의 변수
print name, age # 출력 결과: 홍길동 30
}
위의 예시에서 name
과 age
는 사용자 정의 변수로, 각각 "홍길동"이라는 이름과 30이라는 나이를 저장하고 있습니다. 이 변수들은 프로그램의 다른 부분에서도 사용될 수 있습니다.
내장 변수를 활용하기
AWK에는 다양한 내장 변수가 있으며, 그 중 일부를 소개하겠습니다:
- NR: 현재 레코드 번호를 나타냅니다. 이 변수는 입력된 데이터의 각 줄을 처리할 때마다 자동으로 증가합니다.
- NF: 현재 레코드에서 필드의 개수를 나타냅니다. 이 변수는 각 줄에 포함된 데이터의 개수를 파악하는 데 유용합니다.
- FS: 입력 필드를 구분하는 문자열(기본값은 공백)입니다. 이 변수를 통해 데이터의 구분자를 설정할 수 있습니다.
예시:
{
print "레코드 번호:", NR # 각 레코드에 대해 번호 출력
print "필드 개수:", NF # 각 레코드에 포함된 필드 개수 출력
}
위 코드는 파일의 모든 줄을 읽으며 각 줄마다 해당 줄의 레코드 번호와 필드 개수를 출력합니다. 이를 통해 데이터의 구조를 이해하고, 필요한 정보를 쉽게 추출할 수 있습니다.
연산자의 종류
AWK에서 제공하는 연산자는 크게 세 가지 범주로 나눌 수 있습니다:
산술 연산자
+
(더하기): 두 숫자를 더합니다.-
(빼기): 한 숫자에서 다른 숫자를 뺍니다.*
(곱하기): 두 숫자를 곱합니다./
(나누기): 한 숫자를 다른 숫자로 나눕니다.%
(나머지): 두 숫자를 나눈 후의 나머지를 구합니다.
관계 연산자
==
,!=
,<
,<=
,>
,>=
: 값 간 비교를 수행합니다. 이 연산자들은 조건문에서 주로 사용되어 특정 조건을 만족하는지를 판단하는 데 도움을 줍니다.
논리 연산자
&&
: 논리 AND, 두 조건이 모두 참일 때 참을 반환합니다.||
: 논리 OR, 두 조건 중 하나라도 참일 때 참을 반환합니다.!
: NOT, 조건의 참/거짓을 반전시킵니다.
예시:
{
if ($1 > 50) { # 첫 번째 필드가 50보다 큰 경우
print $0 # 해당 행 전체 출력
}
}
위 코드에서는 첫 번째 필드를 기준으로 조건문을 작성하여 특정 조건을 만족하는 행만 선택적으로 출력합니다. 이를 통해 데이터에서 필요한 정보만을 필터링할 수 있습니다.
복합적인 사용 사례
변수와 연산자를 조합하여 더 복잡한 작업도 수행할 수 있습니다. 아래는 학생 성적 데이터 파일에서 평균 점수를 계산하는 예제입니다.
예시:
{
total += $2 # 두 번째 필드를 총점에 추가
}
END {
average = total / NR; # 평균 계산
print "평균 점수:", average;
}
이 코드는 입력된 데이터 파일에서 두 번째 열(성적)을 합계하고 마지막에 총 학생 수(NR)로 나누어 평균 점수를 계산해 줍니다. 이와 같은 방식으로 AWK를 활용하면 대량의 데이터에서 유용한 통계 정보를 쉽게 추출할 수 있습니다.
결론
변수와 연산자는 AWK 스크립트를 작성할 때 매우 중요한 요소입니다. 이들을 적절히 활용하면 데이터를 효율적으로 처리하고 원하는 결과를 얻을 수 있습니다. 실습과 반복 학습을 통해 이러한 기본 원리를 확실히 익혀보세요! AWK의 다양한 기능을 활용하여 복잡한 데이터 처리 작업을 간편하게 수행할 수 있는 능력을 기르시기 바랍니다.
'프로그래밍 > AWK' 카테고리의 다른 글
AWK 내장 함수의 모든 것: 데이터 처리의 강력한 도구 (1) | 2025.06.13 |
---|---|
AWK와 다른 도구 결합: 데이터 처리의 새로운 가능성 (0) | 2025.06.12 |
AWK에서 사용자 정의 함수의 중요성과 활용법 (0) | 2025.06.12 |
AWK 스크립트 디버깅: 코드 품질을 높이는 필수 과정 (1) | 2025.06.11 |
데이터 처리의 기초: 필드와 레코드 이해하기 (1) | 2025.06.11 |