프로그래밍/AWK

AWK를 활용한 파일 처리와 명령어 실행의 모든 것

shimdh 2025. 6. 8. 10:13
728x90

AWK는 텍스트 파일을 처리하고 데이터를 조작하는 데 있어 매우 강력한 도구입니다. 이 블로그 포스트에서는 AWK의 명령어 실행 및 데이터 처리 방법에 대해 깊이 있게 살펴보겠습니다. AWK를 통해 파일 처리의 효율성을 높이고, 데이터 분석 작업을 보다 간편하게 수행할 수 있는 방법을 알아보겠습니다.

명령어 실행

AWK는 외부 명령어를 호출하여 그 결과를 사용할 수 있는 기능을 제공합니다. 이 기능은 데이터 분석이나 시스템 관리 작업에서 특히 유용합니다. AWK에서 명령어를 실행하는 두 가지 주요 방법은 다음과 같습니다.

1. system() 함수

system() 함수는 외부 명령어를 실행하고 그 결과를 반환합니다. 이를 통해 사용자는 AWK 스크립트 내에서 직접 시스템의 다양한 명령어를 실행할 수 있습니다.

예제:

BEGIN {
    command = "ls -l"
    result = system(command)
    print "Command executed with return value:", result
}

위 코드는 현재 디렉터리의 파일 목록을 나열하는 ls -l 명령어를 실행하고, 그 반환 값을 출력합니다. 이를 통해 사용자는 파일의 세부 정보를 쉽게 확인할 수 있습니다.

2. 백틱(`)

백틱은 외부 프로그램의 출력을 변수에 저장하는 데 사용됩니다. 이 방법은 명령어의 결과를 직접 변수에 할당하여 후속 처리에 활용할 수 있게 해줍니다.

예제:

{
    file_list = "`ls`"
    print "Files in directory:", file_list
}

이 코드는 현재 디렉터리의 모든 파일 이름을 출력합니다. 사용자는 이 정보를 바탕으로 파일 관리 작업을 보다 효율적으로 수행할 수 있습니다.

데이터 처리

AWK는 데이터를 필터링하고 변환하는 데 유용한 다양한 방법을 제공합니다. 여기서는 주로 내장 변수와 패턴 매칭에 대해 다루겠습니다.

1. 내장 변수

AWK에는 여러 가지 내장 변수가 있으며, 이는 데이터 처리를 쉽게 합니다. 이러한 변수들은 사용자가 데이터를 보다 직관적으로 이해하고 조작할 수 있도록 도와줍니다.

  • FILENAME: 현재 입력 파일의 이름을 나타냅니다.
  • NR: 현재 레코드 번호, 즉 줄 번호를 나타냅니다.
  • NF: 현재 레코드에서 필드 수를 나타냅니다.

예제:

{ 
    print "Processing file:", FILENAME 
    print "Line number:", NR 
    print "Number of fields in this line:", NF 
}

이 스크립트는 각 줄마다 해당 줄이 속한 파일 이름과 줄 번호, 그리고 필드 개수를 출력합니다. 이를 통해 사용자는 데이터의 구조를 쉽게 파악할 수 있습니다.

2. 패턴 매칭과 액션

AWK는 특정 조건에 맞는 데이터를 선택적으로 처리할 수 있는 기능을 제공합니다. 이 기능은 데이터 분석에서 매우 유용하게 사용됩니다.

예제:

{
    if ($3 > 100) {
        print $1, $2, $3
    }
}

위 코드는 세 번째 필드가 100보다 큰 경우 첫 번째와 두 번째 필드를 출력합니다. 이러한 방식으로 사용자 정의 조건에 따라 데이터를 선별적으로 추출할 수 있습니다. 이는 데이터 분석의 정확성을 높이는 데 기여합니다.

결론

AWK에서 파일 처리 및 명령어 실행은 강력한 도구입니다. 시스템 커맨드를 활용하면 더 많은 정보를 얻거나 다른 작업과 결합하여 효율적인 데이터 처리가 가능합니다. 위에서 소개한 예제를 바탕으로 실습해보면 더욱 이해하기 쉬울 것입니다. AWK의 다양한 기능을 활용하여 데이터 처리의 새로운 가능성을 탐색해보세요!

728x90