AWK 处理文本的编程语言工具

AWK 是一种用于处理文本的编程语言工具。

任何awk语句都是由模式和动作组成,一个awk脚本可以有多个语句。模式决定动作语句的触发条件和触发时间。

 

特殊字段:

BEGIN语句设置计数和打印头部信息,在任何动作之前进行。

END语句输出统计结果,在完成动作之后执行。

 

分隔符默认是空格,可以用-F, 改变成逗号为分隔符 -F,  或改成冒号 -F:

 

安装软件:

[root@xuegod63 tmp]# rpm -qf `which awk`

gawk-3.1.7-6.el6.x86_64

[root@xuegod63 tmp]# rpm -qf `which sed`

sed-4.2.1-7.el6.x86_64

 

 

例子:

1.自定义年月日的显示方式:

Year:2015       month:Feb     days:11

例:

[root@xuegod63 tmp]# date | awk '{print "Year:"$6  "\t month:"$2  "\t days:"$3}'

Year:2015  month:Feb days:11

 

准备要显示的内容:

#vim result.txt

andy 4 85 92 78 94 88

bob 6 89 90 75 90 86

claire 9 84 88 80 92 84

dave 5 94 52 84 86 NA

 

2.显示所有内容:

#awk '{print $0}' result.txt   

3、显示第一行,以:作为分隔符

[root@xuegod63 tmp]# awk -F: '{ print $1 }' /etc/passwd

 

3.显示第一列和第三列的内容。

[root@xuegod63 tmp]# awk '{print $1,$3}' result.txt

andy 85

bob 89

claire 84

dave 94

4.打印一个文件头,打印一个文件尾

特殊字段:

BEGIN语句设置计数和打印头部信息,在任何动作之前进行。

END语句输出统计结果,在完成动作之后执行。

[root@xuegod63 tmp]# awk 'BEGIN {print "name level result\n"} {print $1,$2,$3} END{ print "end of class1 results"}' result.txt

name level result

 

andy 4 85

bob 6 89

claire 9 84

dave 5 94

 

end of class1 results

 

第二列大于等于5的那些记录

[root@xuegod63 tmp]# awk '$2 >= 5 {print $0}' result.txt

bob 6 89 90 75 90 86

claire 9 84 88 80 92 84

dave 5 94 52 84 86 NA

 

显示用户名为andy或(和)第二列为9的记录

[root@xuegod63 tmp]# awk  '{ if($1 == "andy" || $2=="9") print $0 }'  result.txt

[root@xuegod63 tmp]# awk  '{ if($1 == "andy" &&  $2=="9") print $0 }'  result.txt

转载于:https://my.oschina.net/034/blog/1551886

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值