필드 분리자 (Field Separator)

입력 필드 분리자 (FS)

awk의 빌트인 변수 FS는 입력 필드 분리자의 값을 가지고 있다. 

FS의 디폴트 값으로 공백과 탭이 사용되고 이 값으로 입력 필드가 분리된다. 

FS의 값은 BEGIN 문장 또는 명령라인에서 새로운 값으로 변경될 수 있다. 

명령라인에서 FS 값을 변경하기 위해서는 -F 옵션을 사용해야 한다. 이때 -F 다음에 적어주는 문자가 새로운 필드 분리자가 된다.


필드 분리자를 여러 개 지정할 수도 있다.

-F 옵션은 브라켓([ ]) 안에서 정규표현식을 사용할 수 있는데, 아래의 예제에서 공백이나, 콜론(:), 탭을 만나면 이 문자를 필드 분리자로 인식한다. 

작은 따옴표는 쉘의 메타문자로 인식하지 않도록 하기 위함이다.





액션

pattern {action statment; action statment; etc.}

or

pattern

{

action statement

action statement

}


awk에서 액션은 컬리 블레이스로 둘러싸인 문장이며 세미콜론(:)으로 구분된다.

패턴은 애션 앞에 오며, 액션은 간단한 문장 또는 복잡한 문장들의 그룹으로 만둘 수 있다. 

문장들은 세미콜론 또는 newline에 의해 분리된다.

{print $1, $2}

 패턴은 첫 번째 열기 컬리 브레이스 ({) 부터 첫 번째 닫기 컬리 브레이스(}) 까지의 액션을 관리한다.

만약 패턴 뒤에 액션이 올 때, 첫 번째 열기 컬리 브레이스는 패턴과 같은 라인에 있어야 한다.

문자열 매칭 패턴은 슬래시(/) 로 둘러싸인 정규표현식을 포함한다.



awk와 정규표현식

awk에서 정규표현식은 슬래시(/)로 둘러싸인 문자들로 구성된 패턴이다. 

awk는 정규표현식을 수정할 수 있는 정규표현식 메티문자(egrep와 같음) 사용을 지원한다.



아래의 awk 명령은 대문자로 시작하고, 두 번째 문자부터 소문자를 하나 이상 포함하고 있으며, 그 뒤로 공백이 있는 라인을 출력하라는 의미이다.


awk에서 지원하는 메타문자


 awk 메타문자

의미 

문자열의 시작과 매칭 

문자열의 끝과 매칭 

문자 한 개와 매칭 

문자가 없거나 그 이상과 매칭 

하나의 문자 또는 그 이상과 매칭 

문자가 없거나 하나와 매칭 

[ABC] 

A, B, C 문자셋 중 하나의 문자만 매칭 

[^ABC] 

A, B, C 문자셋 중 매칭되는 문자가 하나도 없음 

[A-Z] 

A에서 Z까지의 범위에서 매칭되는 문자가 있음 

A|B 

A 또는 B 문자 매칭 

(AB)+

AB 문자셋이 하나 이상 매칭. 예) AB, ABAB, ABABAB 

검색 문자열에서 검색된 문자열로 대체할 때 사용 



awk에서 지원하지 않는 메타문자    

 메타문자

의미 

\< >/ 

단어 

\( \) 

후위 참조 

\{ \} 

반복 



'Linux > awk' 카테고리의 다른 글

match 연산자  (0) 2013.04.21
awk 동작원리, print, printf, OFMT 변수  (0) 2013.04.21
awk programming  (0) 2013.04.21
Posted by scii
: