카테고리 없음

(쉘스크립트) AWK 개념

쿠카이든 2023. 2. 8. 09:33
728x90
AWK (Aho Weinberger Kernighan) 개념
  • AWK는 텍스트가 저장되어 있는 파일을 원하는 대로 필터링하거나 추가해주거나 기타 가공을 통해서 나온 결과를 행과 열로 출력해주는 프로그램 이다.
  • 좀더 쉽게 말하자면, awk는 "awk programming language"라는 프로그래밍 언어로 작성된 프로그램을 실행 하는 명령어라고 이해하면 좋다.
  • 즉, 리눅스에서 쉘 스크립트(Shell Script)로 작성된 파일이 리눅스 쉘(Shell)에 의해 실행되는 것처럼, awk가 "awk programming language" 문법으로 작성된 코드를 이해하고 실행 한다는 의미로 보면 된다.

 

명령어 예를 들자면, 다음과 같이 a.txt 파일이 있다고 하자. 파일내용은 다음과 같다.

 
 
1 2
 
3 4

만일 1열의 데이터와 2열의 데이터를 각각 곱한 값을 얻는 로직을, ( 1*2=2 / 3*4=12 )

awk 언어로 작성된 awk명령어를 통해 구현한다고 하면

 
$ cat a.txt | awk '{print $1 * $2;}'

이런식으로 따로 쉘스크립트 작성없이 단 한줄로 스크립트 동작을 구현 할 수 있다.

 

awk는 파일로부터 레코드(record)를 선택하고, 선택된 레코드에 포함된 값을 조작하거나 데이터화 한다.

위와 같은 텍스트 파일 내용이 있다면, 여기서 각 단어들은 공백으로 구분되어져 있다.

그리고 여기서 각 줄(line)은 레코드(Record)라고 칭하고 그 안에 각각의 단어들이 필드(Field)라고 칭해진다. (데이터베이스 테이블 과 같다.)

 

AWK 프로그래밍 문법에서는 레코드가 $0, 그리고 $1, ..., $N은 각 필드 인자를 나타내게 프로그래밍 되어 있다. 

 

따라서, 위에서 예시를 든 코드를 다시 보자면, 이런식으로 해석이 된다.

$0는 한 행을 의미하고, $1 는 그 행의 첫번째 필드, $2 는 두번째 필드가 되는 것이다.

 


간단하게 awk가 제공해주는 동작 원리를 살펴보았다.

정리하자면, awk는 명령의 입력으로 지정된 파일로부터 데이터를 분류한 다음, 분류된 텍스트 데이터를 바탕으로 패턴 매칭 여부를 검사하거나 데이터 조작 및 연산 등의 액션을 수행하고, 그 결과를 출력하는 기능을 수행하는 것이다.

 

마치 리눅스의 SQL문이라고 생각해도 된다.

행(레코드)과 열(필드)로 이루어진 테이블 형태의 FROM 데이터들 중에서 출력하고 싶은 열(필드)만 SELECT하고 WHERE이나 GROUP BY를 통해 데이터들을 합치거나 일부만 뽑아 내어 화면에 출력하는 것이 sql문인데, 위의 awk 과정이 바로 이것과 다름이 없기 때문이다.

거기다 SQL의 스토어드 프로시저 함수처럼 awk역시 조건문, 반복문 코딩이 가능하다.

 

awk 명령으로 출력할 수 있는 일들을 간단히 나열해 보면 다음과 같다.

지금은 아직 세세한 문법은 모르지만 눈에 익혀두자.

출처 : https://inpa.tistory.com/entry/LINUX-%F0%9F%93%9A-awk-%EB%AA%85%EB%A0%B9%EC%96%B4-%EB%AC%B8%EB%B2%95-%EB%A7%88%EC%8A%A4%ED%84%B0-%F0%9F%92%AF-%EC%B4%9D%EC%A0%95%EB%A6%AC

 

[LINUX] 📚 awk 명령어 문법 마스터 💯 총정리

AWK (Aho Weinberger Kernighan) 개념 AWK는 텍스트가 저장되어 있는 파일을 원하는 대로 필터링하거나 추가해주거나 기타 가공을 통해서 나온 결과를 행과 열로 출력해주는 프로그램 이다. 좀더 쉽게 말

inpa.tistory.com

 

728x90