Linux安全网 - Linux操作系统_Linux 命令_Linux教程_Linux黑客

会员投稿 投稿指南 本期推荐: 强烈推荐:Ylmf OS 3.0 正式版发布附迅雷高 XP系统下硬盘安装Fedora 14图文教程
搜索:
您的位置: Linux安全网 > Linux入门 > » 正文

shell脚本之awk学习笔记

来源: 未知 分享至:
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   Beltn--------------------"}{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) 条件操作符 <  <=  ==  !=  >=    ~ 匹配正则表达式   !~ 不匹配正则
表达式        
匹配  使一域号匹配正则表达式,使用 &lsquo;~’后紧跟正则表达式,也可以使用
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    4712    Brown-2  12   30   28 awk \'{if(/^...a/) print}\' grade.txt 结果同上
或关系匹配 | 匹配两边模式之一        使用竖线符时,语句必须用圆括号
括起来 # awk \'$4 ~/([Yy]ellow|[Bb]rown)/\' grade.txt   抽取级别为yellow或
brown的记录 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 \'/^48/\' grade.txt # awk \'/^P.B/\' grade.txt P.Bunny      02/99    48      Yellow   12   35   28

Tags:
分享至:
最新图文资讯
1 2 3 4 5 6
验证码:点击我更换图片 理智评论文明上网,拒绝恶意谩骂 用户名:
关于我们 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 发展历史