본문 바로가기

임베디드

awk 명령어

awk 명령어

 

열 단위로 정리되어 있는 텍스트 파일에서 데이터를 뽑아낼 때 사용한다.

 

문법: awk <pattern> {action}

 

<pattern>

-F : 필드구분자

 

{action}

action은 문장으로 이루어져 있다. action은 간단하게 상수 하나로 이루어질 수 도 있고, 개행 문자나 세미콜론(;)에 의해 분리된 몇 개의 문장의 연속으로 구성될 수 도 있다.

 

print  : 특정 규칙에 맞게 데이터를 화면에 출력한다.

$1, $2, ... $n : 필드 번호

$NF : 마지막 필드

 

예제1

awk -F ':' '{ print $1 }' filename  //입력 필드를 ':'로 구분

awk -F "[:]" '{ print $1 $2 }' filename  //스페이스와 ':'로 입력 필드 구분

awk '/aaa/' filename  //aaa라는 단어가 있는 라인 출력

awk '^aaa/' filename //aaa로 시작하는 라인 출력

awk '/^(aa | bb)/' filename  //aa 또는 bb로 시작하는 라인 출력

 

예제2

/etc/tttt.txt의 경우
$ cat /etc/tttt.txt
 Hello all, I've the same request.
$ cat /proc/cmdline | awk '{print $1}'
Hello 
$ cat /proc/cmdline | awk '{print $2}'
all,

$ cat /proc/cmdline | awk '{print $3}'
I've
$ cat /proc/cmdline | awk '{print $4}'
the
$ cat /proc/cmdline | awk '{print $5}'

same

이런식으로 구분을 하여 옵션별로 떼어낼 수 있다.

$ cat /proc/cmdline | awk '{print NF}'
6
NF는 내부 변수로 컬럼의 갯수를 알려준다.

 

 

 

예제3

 

 

 

 

 

파일내용을 변수로 읽어오기(쉘 스크립트)

var=$(cat filename)

echo "$var"