免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2217 | 回复: 4
打印 上一主题 下一主题

新手请教一个awk的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-07-28 13:29 |只看该作者 |倒序浏览
由于使用了花括号,第一个命令输出了一行,第二行的命令输出了整个文件的内容,我不明白这两种输出的区别,

请大侠指点!

$ awk ' gsub(/4842/,4899) {print $0} ' grade.txt
J.Troll 07/99 4899 Brown-3 12 26 26


$ awk ' {gsub(/4842/,4899) ; print $0} ' 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 4899 Brown-3 12 26 26
L.Tansley 05/99 4712 Brown-2 12 30 28



grade.txt 文件的内容记录了一个称为柔道数据库的行信息。

(此文件有7个域,即(1)名字、(2)升段日期、(3)学生序号、(4)腰带级别、(5)年龄、(6)目前比赛积分、(7)比赛最高分)
$ 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

论坛徽章:
0
2 [报告]
发表于 2011-07-28 14:06 |只看该作者
只有 那一行有4842

论坛徽章:
0
3 [报告]
发表于 2011-07-28 14:22 |只看该作者
回复 1# cpy9981


awk 基础, /pattern/{action} ...

    $ awk ' gsub(/4842/,4899) {print $0} ' grade.txt  ------------------ 没有{}  gsub(/4842/,4899) 相当于pattern , 匹配,并执行了gsub(/4842/,4899),然后打印这一行.
J.Troll 07/99 4899 Brown-3 12 26 26


$ awk ' {gsub(/4842/,4899) ; print $0} ' grade.txt   ---------------------这里的 {action} 无条件执行,  但对于匹配行先进行gsub,才打印 .

论坛徽章:
2
射手座
日期:2014-10-10 15:59:4715-16赛季CBA联赛之上海
日期:2016-03-03 10:27:14
4 [报告]
发表于 2011-07-28 14:25 |只看该作者
本帖最后由 yinyuemi 于 2011-07-28 14:41 编辑

回复 1# cpy9981

$ awk ' gsub(/4842/,4899) {print $0} ' grade.txt  # 红色是Expression,绿色是action

$ awk ' {gsub(/4842/,4899) ; print $0}
' grade.txt # expression 省略了,绿色是action,

论坛徽章:
0
5 [报告]
发表于 2011-07-28 15:43 |只看该作者
学习了!谢谢了!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP