B.2. Awk

Awk

awkC 문법을 연상시키는 완전한 형태의 텍스트 처리 언어입니다. awk는 광범위한 연산자들과 뛰어난 성능을 가지고 있지만 여기서는 쉘 스크립트에서 유용하게 쓰이는 몇 가지만 살펴 보도록 하겠습니다.

awk는 입력된 각 줄을 필드로 나눕니다. 디폴트로, 필드는 공백문자로 분리된 연속된 문자들로 이루어 집니다만 이 구분자를 바꿀수도 있습니다. awk는 이렇게 파싱된 필드를 기준으로 동작하게 됩니다. 이런 작업들로 인해 awk가 구조화된 텍스트 파일, 특히 열과 행으로 나누어진 일관된 데이타 묶음(chunk)으로 된 테이블 처리에 이상적인 도구가 되는 것입니다.

쉘 스크립트안에서는 awk 코드를 강한 쿼우트(strong quote, 작은 따옴표)와 중괄호로 묶어줍니다.

awk '{print $3}'
# 세번째 필드를 표준출력으로 출력.

awk '{print $1 $5 $6}'
# 첫번째, 다섯번째, 여섯번째 필드를 출력.

실제로 awk print 명령어의 사용법을 살펴 봤는데, 이제 변수에 대한 특징만 알아보고 마치겠습니다. awk는 변수를 쉘 스크립트와 비슷하게 다루는데 쉘 스크립트보다는 약간 더 융통성이 있습니다.

{ total += ${column_number} }
column_number의 값을 "total"에 계속 더합니다. 마지막으로, "total"을 출력하려면 END를 써서 전체 처리 과정을 끝내야 합니다.
END { print total }

END와 짝을 이루는 BEGIN은 awk가 입력을 처리하기 전에, 실행할 코드 블럭 앞에 써줘야 합니다.

awk가 쉘 스크립트에서 쓰이는 예제는 다음을 참고하세요.

  1. 예 11-8

  2. 예 16-5

  3. 예 12-24

  4. 예 34-3

  5. 예 9-18

  6. 예 11-12

  7. 예 28-1

  8. 예 28-2

  9. 예 10-3

  10. 예 12-33

  11. 예 9-21

  12. 예 12-3

자, 여기까지가 우리가 다룰 awk의 모든 것입니다. 하지만 배울 것이 더 많으니까 서지사항에서 적당한 레퍼런스를 참고하세요.