| -F fs | 한 줄에서 데이터 필드 경계 식별 위한 파일 구분자 지정. 이시적으로 IFS를 변경하는 효과 ex) -F: |
|---|---|
| -f file | 프로그램을 읽어 동일 파일 이름 지정 |
[root@sooyeon 0726]# gawk '{print "안녕하세요"}'
a
안녕하세요
k
안녕하세요
gg
안녕하세요
^C
grep - 행 추출
gawk - 주로 열 추출
[root@sooyeon 0726]# gawk '{print $2}' db.txt
name
gildong
chulsoo
[root@sooyeon ~]# gawk -F: '{print $1}' /etc/passwd | head -5
root
bin
daemon
adm
lp
[root@sooyeon ~]# gawk 'BEGIN {print "HELLO"}'
HELLO
[root@sooyeon ~]# gawk -F: 'BEGIN {print "REPORT"} {print $1}' /etc/passwd
REPORT
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
...
[root@sooyeon ~]# gawk -F: 'BEGIN {print "REPORT"} {print $1} END{print "보고완료"}' /etc/passwd
REPORT
root
bin
daemon
adm
lp
...
saslauth
tss
rpcuser
nfsnobody
nginx
보고완료
[root@sooyeon ~]# echo "this is a test" | gawk '/test/{print $0}'
this is a test
[root@sooyeon ~]# echo "hello" | gawk '/test123/{print $0}'
gawk는 정규 표현식을 사용할 수 있다.
정규표현식에서
| * | 바로 앞 문자를 0번이상 사용할 수 있다. |
|---|---|
| ? | 바로 앞 문자를 0,1번 사용할 수 있다. |
| + | 한 번 이상 사용 |
| { } 인터벌 | 최소한 한번, 최대 2번까지 |
인터벌
be{1} : 한번
be{1,2} : 한번도 되고 두번까지 됨
[root@sooyeon ~]# echo "bt" | gawk '/be?t/{print $0}'
bt
[root@sooyeon ~]# echo "bet" | gawk '/be?t/{print $0}'
bet
[root@sooyeon ~]# echo "beet" | gawk '/be?t/{print $0}'
bat[abc] 에서 abc는 a or b or c
[root@sooyeon ~]# echo "bet" | gawk '/b[ae]?t/{print $0}'
bet
[root@sooyeon ~]# echo "bt" | gawk '/b[ae]?t/{print $0}'
bt
[root@sooyeon ~]# echo "baat" | gawk '/b[ae]?t/{print $0}'
[root@sooyeon ~]# echo "bct" | gawk '/b[a-z]?t/{print $0}'
bct
[root@sooyeon ~]# echo "bt" | gawk '/b[a-z]?t/{print $0}'
bt
[root@sooyeon ~]# echo "beet" | gawk '/be+t/{print $0}'
beet
[root@sooyeon ~]# echo "beet" | gawk '/b[a-z]{1,3}t/{print $0}'
beet
[root@sooyeon ~]# echo "beaet" | gawk '/b[a-z]{1,3}t/{print $0}'
beaet
[root@sooyeon ~]# echo "bAb0t" | gawk '/b[A-Za-z0-9]{1,3}t/{print $0}'
bAb0t
[root@sooyeon ~]# echo "bAb0et" | gawk '/b[A-Za-z0-9]{1,3}t/{print $0}'
bAb0et
[root@sooyeon 0728]# echo "abcd10" | gawk '/[a-z0-9]{5,10}/{print $0}'
abcd10
[root@sooyeon 0728]# echo "abcd@10" | gawk '/[a-z0-9]{5,10}/{print $0}'
앞에 ^ 쓰면 앞이라는것
종료는 $
[root@sooyeon 0728]# echo "@abcd10" | gawk '/^[a-z0-9]{5,10}$/{print $0}'
[root@sooyeon ~]# echo "the cat is asleep" | gawk '/cat|dog/{print $0}'
the cat is asleep
# c 또는 h이거나 , cat hat 또는 dog의 세가지 경우
[root@sooyeon ~]# echo "the hat is asleep" | gawk '/[ch]at|dog/{print $0}'
the hat is asleep
( ) 는 안에를 한글자로 취급
[root@sooyeon ~]# echo "Sat" | gawk '/Sat(urday)?/{print $0}'
Sat
[root@sooyeon ~]# echo "Saturday" | gawk '/Sat(urday)?/{print $0}'
Saturday