免费注册 查看新帖 |

Chinaunix

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

AWK [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-11-12 14:34 |只看该作者 |倒序浏览
整体来说, a w k是所有s h e l l过滤工具中最难掌握的,不知道为什么,也许是其复杂的语法
或含义不明确的错误提示信息。在学习a w k语言过程中,就会慢慢掌握诸如Bailing out 和
a w k : c m d . L i n e :等错误信息。可以说a w k是一种自解释的编程语言,之所以要在s h e l l中使用a w k
是因为a w k本身是学习的好例子,但结合a w k与其他工具诸如g r e p和s e d,将会使s h e l l编程更加
容易。
调用awk
第一种是命令行方式
awk [-F field_seperator] 'command' inputfile
上面例子中, [ - F域分隔符]是可选的,因为a w k使用空格作为缺省的域分隔符
模式和动作
任何a w k语句都由模式和动作组成。在一个a w k脚本中可能有许多语句。模式部分决定动
作语句何时触发及触发事件。处理即对数据进行的操作。如果省略模式部分,动作将时刻保
持执行状态。
模式可以是任何条件语句或复合语句或正则表达式。模式包括两个特殊字段B E G I N和
E N D。使用B E G I N语句设置计数和打印头。B E G I N语句使用在任何文本浏览动作之前,之后
文本浏览动作依据输入文件开始执行。E N D语句用来在a w k完成文本浏览动作后打印输出文
本总数和结尾状态标志。如果不特别指明模式, a w k总是匹配或打印行数。
域和记录
a w k执行时,其浏览域标记为$ 1,$ 2 . . . $ n。这种方法称为域标识。使用这些域标识将更容
易对域进行进一步处理。$0表示所有域。
当第一次使用a w k时,可能被错误信息搅得不知所措,但通过长时间和不断的学习,可总
结出以下规则。在碰到a w k错误时,可相应查找:
• 确保整个a w k命令用单引号括起来。
• 确保命令内所有引号成对出现。
• 确保用花括号括起动作语句,用圆括号括起条件语句。
• 可能忘记使用花括号,也许你认为没有必要,但a w k不这样认为,将按之解释语法。
元字符
这里是a w k中正则表达式匹配操作中经常用到的字符,详细情况请参阅本书第7章正则表
达式概述。
^ $ . [] | () * + ?
这里有两个字符第7章没有讲到,因为它们只适用于a w k而不适用于g r e p或s e d。它们是:
+ 使用+匹配一个或多个字符。
? 匹配模式出现频率。例如使用/X Y?Z/匹配X Y Z或Y Z。
条件操作符
= 大于等于
< = 小于等于~ 匹配正则表达式
= = 等于!~ 不匹配正则表达式
!= 不等于
匹配
为使一域号匹配正则表达式,使用符号‘~’后紧跟正则表达式,也可以用i f语句。a w k
中i f后面的条件用()括起来。
精确匹配使用等号= =
不匹配!~
或关系匹配使用竖线符|
复合操作符
&& AND : 语句两边必须同时匹配为真。
|| O R:语句两边同时或其中一边匹配为真。
! 非求逆


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/11500/showart_56627.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP