리눅스 명령어 > awk

Redjini WiKi
< linux‎ | cmd
Acepro (토론 | 기여)님의 2018년 5월 14일 (월) 15:43 판
(차이) ← 이전 판 | 최신판 (차이) | 다음 판 → (차이)


사용법

awk [-f 프로그램파일] [-F 필드구분자] ["패턴{액션}"] [처리할 파일명]
옵션
  • -f 프로그램 파일 : awk 유틸리티의 실행 액션이 저장된 프로그램 파일을 지정
  • -F 필드 구분자 : 필드 구분자를 지정
  • "패턴{액션}"  : 패턴이 일치하면 액션이 실행된다.

사용예

  • text.txt 파일에서 ":" 구부자를 이용하여 1번째와 6번째 필드를 출력
$> awk -F : '{print $1, $6}' ./text.txt
  • text.txt 파일에서 1번째 값이 10보다 큰경우 3,4번째 필드를 출력
$> awk '$4 > 10 {print $3 $4}' ./text.txt

패턴과 액션의 구조

awk의 옵션 중의 하나였던 ["패턴{액션}"] 에서도 여러가지 구조가 존재한다. 가장 대표적인 3가지

- BEGIN 
첫번째 레코드를 읽기 전에 지정된 액션을 실행
- END 
마지막 레코드를 읽고 난 후, 지정된 액션을 실행
- PATTERN 
입력되는 각 라인(레코드)별로 실행되며, 만약 그 라인이 패턴과 일치할 경우 액션이 실행된다.
정규표현식의 경우 "/정규식/"  으로 나타낸다.
패턴만 있는 경우 : 패턴과 일치하는 라인을 화면에 출력한다.
액션만 있는경우 : 모든 라인이 액션의 대상이 된다.

시스템 변수

awk가 내부적으로 인식하는 변수들이다. 이것을 이용하면 조금 더 효율적으로 사용 할 수 있다.

변수명  내용 
FILENAME  현재 처리중인 파일명
FS  필드 구분자로 디폴트는 공백
RS  레코드 구분자로 디폴트는 새로운 라인
NF  현재 레코드의 필드 개수
NR  현재 레코드의 번호
OFS  출력할 때 사용하는 FS
ORS  출력할 때 사용하는 RS
$0  입력 레코드의 전체
$n  입력 레코드의 n번째 필드