1. 程序结构
### begin 区域的语法: BEGIN { awk-commands } ### BEGIN 区域的命令只在最开始执行一次,可选 /pattern/{action} ### 每从输入文件中读取一行,就会执行一次body区域的命令 END { awk-commands } ### END 区域在 awk 执行完所有操作后执行,并且只执行一次,可选 [root@tyler temp]# awk 'BEGIN {FS=":";print"-----header-----"} \ > /mail/{print $1} \ > END {print "-----footer-----"}' /etc/passwd -----header----- -----footer----- [root@tyler temp]#
|
2. 执行多个文件
### 例子 [root@tyler temp]# awk 'BEGIN {FS=":";print "-----header-----"} /mail/{print $1} END {print "------footer-----"}' /etc/passwd /etc/group -----header----- ------footer----- [root@tyler temp]# 注意,即是指定了多个文件,BEGIN 和 END 区域,仍然只会执行一次 |
3. 打印命令 print
### 不带参数,打印整行数据 [root@tyler temp]# awk '{print}' employee.txt 101,John Doe,CEO 102,Jason Smith,IT Manager 103,Raj Reddy,Sysadmin 104,Anand Ram,Developer 105,Jane Miller,Sales Manager [root@tyler temp]#
### 按逗号分隔打印第二个字段 [root@tyler temp]# awk -F ',' '{print $2}' employee.txt John Doe Jason Smith Raj Reddy Anand Ram Jane Miller [root@tyler temp]# |
4. 模式匹配
### 和sed一样,awk也可以只对匹配到的行进行操作 [root@tyler temp]# awk -F ',' '/Manager/{print $2": "$3}' employee.txt Jason Smith: IT Manager Jane Miller: Sales Manager [root@tyler temp]# |