옵션 : -v :지정한 패턴과 일치하지 않는 것들을 보여준다
-n : 일치하는 라인의 결과와 그 파일에서의 겨과 라인이 몇 번째 라인인지 알려줌
-i : 대소문자 구별 x
-c : 일치하는 라인의 수를 보여줌
-[A-Z] file: 대문자 1개라도 포함한 라인 출력
awk는 입력 파일에서 행을 하나씩 읽은 후
사용자 지정 문자열로컬럼을 분리하여 변수에 저장
field단위 처리가 가능 : 가로로 나열된 데이터를 세로 $1,$2... 로 처리
awk는 무조건 ‘ ’ 로 중괄호 { } 로 묶어야 한다.
$3, $4 : ,(콤마)는 한칸 띄우기
“ ” : 문자열은 “ ” 안에 놓여야 한다.
사용되는 용어
- record - 하나의 line
- field - space나 tab등으로 구분된 word
- record separator - ORS와 RS에 저장된 carriage return
- field separator
: 입력 field separator -> FS에 저장 : space, tab, new line
: 출력 field separator -> OFS에 저장 : space
- 내장 변수 : NR(number of record), NF(number of field), $0(해당되는 하나의 record)
awk에서 사용되는 메타 문자
^
|
스트링의 처음에서 일치
|
$
|
스트링의 끝에서 일치
|
.
|
단일 문자에 일치
|
*
|
제로 혹은 많은 서행 문자에 일치
|
+
|
하나 이상의 선행 문자에 일치
|
?
|
제로 혹은 많은 선행 문자중에 하나와 일치
|
[ABC]
|
문자 세트에 있는 하나의 문자와 일치(A, B, C)
|
[^ABC]
|
문자 세트에 없는 하나의 문자와 일치(A, B, C 제외한 문자)
|
[A-Z]
|
A에서 Z까지에 있는 문자와 일치. 즉 대문자
|
A|B
|
A또는 B와 일치
|
(AB)+
|
AB 의 하나 이상의 세트와 일치
|
\*
|
문자 그대로의 별 표시와 일치
|
&
|
검색 스트링에서 발견된 것을 표시하기 위해 대체 스트링에서 사용
|
ls -al | awk '{print $5}'
-> ls -al 결과중 5번째 필드 출력
ls -al / | awk '$5 > 4096{print $5}'
-> 5번째 필드중 4096보다 큰 숫자 출력
ls -al / | awk '/root/{print}'
-> / 디렉토리에 root가 들어간 행 출력
ls -al | awk '{print "hahaha" $3}'
-> 앞에hahaha를 붙여서 3번째 필드 출력
ls -al | awk '{substr($1, 1, 5)}'
-> 1번 필드에 1번 문자부터 5번째 문자까지 출력
score.txt
math 20 40 50
engl 10 90 30
kore 30 50 90
awk '{if($3 == "90" print $1}' score.txt
-> score.txt 파일중 3번째 필드가 90인 행의 1번 필드 출력
댓글 없음:
댓글 쓰기