• 『리눅스』awk란? 그리고 사용법
    DevOps 2023. 7. 27. 22:33

    AWK란?

    생소한 이름이고 이름 자체에 뜻은 없다.

    만든 사람이름 세명 합쳐서 만들었다.

    "에이더블유케이"라고 발음하는 사람도 있고 "아크", "오크"라고 발음하는 사람도 있다.

    편한대로 읽으면 될 듯 하다.

     

    보통 파일, 결과값을 슬라이싱하고 추출하는데 많이 사용된다.

    정규표현식과 함께 사용이 가능해서 상당히 유용하다.

     

    사용법

    보통 형식은 다음을 따른다.

    awk 'pattern { action }' file

    위 형식은 대표적인 형식이다.

    • pattern: 조건을 지정하는 부분이다. 패턴에 맞는 라인들을 선택하여 처리한다..
    • action: 패턴에서 설정한 부분에 대해 수행할 동작을 설정한다.
    • file: 처리할 파일의 이름을 지정한다. 비워둘 수도 있다.

     

    간단한 예시를 작성해두었다.

    # 파일 내용 출력
    awk '{ print }' file.txt

    # 파일의 각 라인의 1번째 필드 출력
    awk '{ print $1 }' file.txt

    # 파일의 각 라인의 1번째와 3번째 필드 출력
    awk '{ print $1, $3 }' file.txt

    # 파일의 각 라인의 숫자 합산
    awk '{ sum += $1 } END { print sum }' file.txt

    # awk '$3 == "apple" { print }' file.txt

     

    정규표현식 사용이 가능하다고 하였는데, 간단한 예시는 다음과 같다.

    이메일을 추출하는 명령어이다.

    awk '/[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}/ { print }' file.txt

     

    결론

    나도 잘 모르지만 보면서 꾸준히 사용해볼 예정이다.

    추출이 필요한 경우는 그냥 python 스크립트를 사용했던 입장으로써 정규표현식을 포함한 awk명령어가 너무 어렵다.

    사실 정규표현식은 필수인데 그냥 내가 안했다...

    반성하게 된다. 다음 글은 아마도 정규표현식이 되지 않을까 싶다...

    댓글