[root@localhost test11]
# awk '$1~/^w/ {print}' file
wangmei
70
[root@localhost ~]
# awk -F: 'BEGIN {printf "%-10s %-5s
%-15s\n","user","uid","shell"} $3==0,$7~"nologin" {printf "%-10s %-5s
%-15s\n",$1,$3,$7}' /etc/passwd
user uid shell
root
0
/bin/bash
bin
1
/sbin/nologin
[root@localhost ~]
# awk -F: 'BEGIN {printf "%-10s %-5s
%-15s\n","user","uid","shell"} $3==0,$7~"nologin" {printf "%-10s %-5s
%-15s\n",$1,$3,$7} END{print "-------end---------"}' /etc/passwd
user uid shell
root
0
/bin/bash
bin
1
/sbin/nologin
-------end---------
说明:
$3
==
0
,
$7
~
"nologin"
表示匹配符合条件
1
到条件
2
之间的所有行(成对多次匹配),如果条件
2
不成立,则一直匹配到文件尾部
[root@localhost ~]
# cat /etc/passwd | awk '{FS=":"} $3 < 10 {print $1 "\t"
$3}'
查阅
/etc/passwd
文件第三列小于
10
以下的数据,并且仅列出账号与第三列。但是这样的写法
会导致第一行无法正确显示出来,由于读入第一行的时候,变量
$1
,
$2……
默认还是以空格符为分隔的,
定义的
FS=“
:
”
仅能在第二行后才开始生效。可以使用
BEGIN
这个关键字来达到从第一行读入。
[root@localhost ~]
# cat /etc/passwd | awk 'BEGIN {FS=":"} $3 < 10 {print $1
"\t" $3}'
[root@localhost ~]
# cat /etc/passwd | awk -F : '$3 < 10 {print $1 "\t" $3}'
说明:
$3
变量是空值,但是后面与之作比较的是整数,所以
$3
的值是
0
,满足条件,所以打印
$1
的结果,在此打印
$3
的结果时
$3
是空串。
其他运算符
awk
还支持其他的一些运算符,例如正号
+
、负号
-
、自增
++
以及自减
--
等,这些运算符的使用方法与其他
的语言的使用方法完全相同。