shell脚本之awk学习笔记

来源:网络 责任编辑:栏目编辑 发表时间:2013-07-02 00:01 点击:

shell脚本学习笔记九——awk
    
#cat grade.txt
M.Tansley    05/99    48311   Green    8    40   44
J.Lulu       06/99    48317   green    9    24   26
P.Bunny      02/99    48      Yellow   12   35   28
J.Troll      07/99    4842    Brown-3  12   26   26
L.Tansley    05/99    4712    Brown-2  12   30   28

awk '{print $1,$4}' grade.txt
打印报告头
awk 'BEGIN {print "Name \t   Belt\n--------------------"}{print $1"\t"$4}' grade.txt
 
打印信息尾
# awk 'BEGIN{print "Name \t \n------"}{print $1}END{print "--end of report--"}' grade.txt

Name    
------
M.Tansley
J.Lulu
P.Bunny
J.Troll
L.Tansley
--end of report--

awk中正则表达式及其操作
1) 元字符     \ ^ $ . [] | () * + ?
2) 条件操作符 <  <=  ==  !=  >=    ~ 匹配正则表达式   !~ 不匹配正则

表达式       

匹配  使一域号匹配正则表达式,使用 ‘~’后紧跟正则表达式,也可以使用

if语句.awk中if后面的条件用()括起来
# awk '{if($4 ~/Brown/)print $0}' grade.txt
J.Troll      07/99    4842    Brown-3  12   26   26
L.Tansley    05/99    4712    Brown-2  12   30   28
# awk '$0 ~/Brown/' grade.txt
J.Troll      07/99    4842    Brown-3  12   26   26
L.Tansley    05/99    4712    Brown-2  12   30   28

精确匹配
# awk '{if($3=="48") print $0}' grade.txt              第三列有很多

48,所以要用精确匹配
P.Bunny      02/99    48      Yellow   12   35   28
# awk '$3==48' grade.txt                               awk默认动作是

print
P.Bunny      02/99    48      Yellow   12   35   28

awk '{ if ($6 < $7) print $1" Try better at..."}' grade.txt
M.Tansley Try better at...
J.Lulu Try better at...

设置大小写     [] 可匹配任意字符或单词
awk '{if($4 ~/[Gg]reen/) print $0}' grade.txt
M.Tansley    05/99    48311   Green    8    40   44
J.Lulu       06/99    48317   green    9    24   26
awk '/[Gg]reen/' grade.txt         结果同上

任意字符
[root@localhost awk_sed]# awk '$1 ~/^...a/' grade.txt
M.Tansley    05/99    48311   Green    8    40   44
L.Tansley    05/99  &

    发表评论
    请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
    用户名: 验证码:点击我更换图片
    最新评论 更多>>

    推荐热点

    • /etc/fstab 详解
    • nginx主主集群
    •  LVS-NAT和LVS-DR模式的实现详解
    •  RHCE考试之磁盘配额
    • 学习笔记:ACL详解
    •  LVM逻辑卷管理器
    • suse linux双网卡双网关配置
    •  Nginx主主负载均衡架构
    • ubuntu学习Mysql

    快速直达

    操作系统导航

    LinuxWindows虚拟机
    网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
    Copyright © 2008-2015 计算机技术学习交流网. 版权所有

    豫ICP备11007008号-1