[dywang@dywmac zzz]$ gawk -W help | grep ^Example -A2
Examples:
gawk '{ sum += $1 }; END { print sum }' file
gawk -F: '{ print $1 }' /etc/passwd
[dywang@dywmac zzz]$ gawk -F: '{print $1 "\t" $3}' /etc/passwd | head -4
root 0
bin 1
daemon 2
adm 3
-F 選項指定 passwd 以冒號 ":" 作為欄位的分隔,而是在單引號內,也就是 awk 程式本身設定分隔符號,則執行結果如下,第一行還是以「空白」做為分隔符號,所以無法正確輸出。
[dywang@dyw219 zzz]$ gawk 'FS=":" {print $1 "\t" $3}' /etc/passwd | head -4
root:x:0:0:root:/root:/bin/bash
bin 1
daemon 2
adm 3
FS=":" 的設定以 BEGIN 先設定就可以解決第一行輸出不正確的問題。
[dywang@dyw219 zzz]$ gawk 'BEGIN{FS=":"} {print $1 "\t" $3}' /etc/passwd | head -4
root 0
bin 1
daemon 2
adm 3
| 運算單元 | 代表意義 |
> |
大於 |
< |
小於 |
>= |
大於或等於 |
<= |
小於或等於 |
== |
等於 |
!= |
不等於 |
[dywang@dywmac zzz]$ gawk 'BEGIN{FS=":"} $3<=4 {print $1 "\t" $3}' /etc/passwd
root 0
bin 1
daemon 2
adm 3
lp 4
[dywang@dywmac zzz]$ gawk 'BEGIN{FS=":"} $3>=500 {print $1 "\t" $3}' /etc/passwd
nfsnobody 65534
dywang 500
mockbuild 502
linda 503
[dywang@dywIssd zzz]$ vim passwd.awk
[dywang@dywIssd zzz]$ cat passwd.awk
BEGIN{
FS=":"
}
$3>=500 {
print $1 "\t" $3
}
[dywang@dywIssd zzz]$ awk -f passwd.awk /etc/passwd nfsnobody 65534 dywang 500 linda 501