awk——基础

1. 程序结构

### begin 区域的语法:

BEGIN { awk-commands }

### BEGIN 区域的命令只在最开始执行一次,可选

### body 区域的语法:

/pattern/{action}

### 每从输入文件中读取一行,就会执行一次body区域的命令

### end 区域的语法:

END { awk-commands }

### END  区域在 awk  执行完所有操作后执行,并且只执行一次,可选

### 一个例子

[root@tyler temp]# awk 'BEGIN {FS=":";print"-----header-----"} \

> /mail/{print $1} \

> END {print "-----footer-----"}' /etc/passwd

-----header-----

mail

-----footer-----

[root@tyler temp]#


 

 

2. 执行多个文件

### 例子

[root@tyler temp]# awk 'BEGIN {FS=":";print "-----header-----"}

/mail/{print $1}

END {print "------footer-----"}' /etc/passwd /etc/group

-----header-----

mail

mail

------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]#

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值