- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
AWK使用技巧
awk 使用技巧文模仿十三问,以提问和回答的方式介绍awk的一些基础知识。论坛里awk高手众多,有错误的地方还请大家指正。具体版本如下: ly5066113@ubuntu:~$ uname -a Linux ubuntu 2.6.24-22-generic #1 SMP Mon Nov 24 19:35:06 UTC 2008 x86_64 GNU/Linux ly5066113@ubuntu:~$ bash --version GNU bash, version 3.2.39(1)-release (x86_64-pc-linux-gnu) Copyright (C) 2007 Free Software Foundation, Inc. ly5066113@ubuntu:~$ awk --version GNU Awk 3.1.6 Copyright (C) 1989, 1991-2007 Free Software Foundation. 复制代码 一、RS 与 ORS 差在哪??我们经常会说,awk是基于行列操作文本的,但如何定义“行”呢?这就是RS的作用。??默认情况下,RS的值是\n。下面通过实例来理解下RS。 ly5066113@ubuntu:~$ echo 1a2a3a4a5 | awk {print $1} 1a2a3a4a5 ly5066113@ubuntu:~$ echo 1a2a3a4a5 | awk BEGIN{RS=a}{print $1} 1 2 3 4 5 复制代码 我们可以看到,在更改了RS的值后,awk定义的行已经不是我们实际意义中的行了。??上面RS固定的字符串,RS也可以定义为正则表达式。 ly5066113@ubuntu:~$ echo 1ab2bc3cd4de5 | awk BEGIN{RS=[a-z]+}{print $1,RS,RT} 1 [a-z]+ ab 2 [a-z]+ bc 3 [a-z]+ cd 4 [a-z]+ de 5 [a-z]+ 复制代码 当我们将RS设置为正则表达式的时候,RT这个变量就有作用了,RS的值始终为我们设定的正则,RT的值则是这个正则实际匹配到的内容。??下面我们看看将RS设置为空会是什么情况 ly5066113@ubuntu:~$ cat urfile 1 2 3 4 ly5066113@ubuntu:~$ awk BEGIN{RS=}{print $0} urfile 1 2 3 4 复制代码 如果RS被设置为空,那么awk会将连续的空行作为行分隔符,与RS设置成\n\n+有什么区别?????1、忽略文件开头和结尾的空行。且文件不以记录分隔符结束,即最后不是空行,会将最后一个记录的尾\n去掉??2、不设置RT变量(测试未发现规律,暂时认为RT变量不可用)??3、影响FS变量??这个怎么理解?对于1、2两点,当作习题留给大家自己测试,3我们下节来讲。??总结下RS的3种情况:??1) 非空字符串? ???以固定字符串作为行分隔符,同时设置变量RT为固定字符串??2) 正则表达式? ???以正则表达式作为行分隔符,同时设置变量RT为正则表达式实际匹配到的字符串??3) 空字符? ???以连续的空行作为行分隔符,如果FS为单个字符,会将\n强制加入到FS变量中??理解了RS,再来理解ORS就简单了。RS是awk读取文件时的行分隔符,ORS则是awk输出时的行结束符。??更简单的讲,就是awk在输出时,会在每行记录后面增加一个ORS变量所设定的值。??ORS的值只能设定为字符串,默认情况下,ORS的值是\n ly5066113@ubuntu:~$ seq 5 | awk {print $0} 1 2 3 4 5 ly5066113@ubuntu:~$ seq 5 | awk BEGIN{ORS=a}{print $0} 1a2a3a4a5a 复制代码 我们平常用的 print $0 等价于 printf $0 ORS二、FS 与 OFS 差在哪??RS是awk用来定义“行”的,那么FS就是awk用来定义“列”的。??设置变量 FS 与使用 -F 参数是一样的。 ly5066113@ubuntu:~$ echo 1,2 | awk -F , {print $1} 1 ly5066113@ubuntu:~$ echo 1,2 | awk BEGIN{FS=,}{print $1} 1 复制代码 与 RS 类似,FS 同样可以设置为正则表达式 ly5066113@ubuntu:~$ echo 1ab2bc3cd4de5 | awk BEGIN{FS=[a-z]+}{pr
文档评论(0)