필드 분리자, 액션, 정규표현식, 메타문자
Linux/awk 2013. 4. 21. 12:17 |필드 분리자 (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 |