grep、awk、sed与正则表达式

在很久很久以前,就听说了这三大文本处理工具,但是和bash shell脚本编程一样,我对它们的认识一直停留在知道这三个名字上面。在第二年复习考研的过程中,曾经在图书馆花一下午看了一遍相关的介绍,奈何当时的专注点不在这里,一直也没有实践,早已忘到脑后。今天重新查找了一些网页,回忆一下相关的用法,做一个小总结吧,方便以后查阅。

awk,是因为其取了三位创始人 Alfred AhoPeter Weinberger, 和 Brian Kernighan 的姓氏的首字符。最初是UNIX系统的一个工具,之后GNU组织又实现了更强大的gawk版本。在GNU的相关页面上,有gawk的用户指南。我这次的回忆教材主要参考了以下两个页面:awk学习笔记awk入门指南 其中后者似乎没有写完。如果你对awk完全不了解,推荐看coolshell的简明教程Unix awk使用手册(第二版) 。

sed同样是一个编辑器,查询sed的man页面可以发现sed就是stream editor的缩写。在我的理解,流编辑器,文本流入,进行处理,然后流出,处理中包含有几个space用来暂存数据。sed的重点在正则表达式,写好正则,就能用好sed。sed的简单用法见coolshell的简明教程,在sed的sourceforget页面上有很多有用的页面,其中单行脚本参考提供了很多常用的单行脚本,也具有学习意义。

grep原来是global regular expression print,会只输出符合表达式的行,多数用在过滤信息上,简单的用法见伯乐在线的这篇文章。这篇文章里有有介绍以上几种工具在多核环境下的并行加速使用方法。

关于正则表达式,当初是阅读这篇正则表达式30分钟入门教程第一次了解的,不过如果不用,感觉永远是记不住的,正确的使用方法还是多用才行啊。在这篇文章里有了解到有介绍grep、awk、sed工具里正则表达式的差别。

相比一篇笔记,这更像是一篇各种介绍、教程的总结。在我看来,awk更适合处理以列分布为特点的文件,而sed更多的处理文本行的更改、调整等操作,grep则对文件进行过滤筛选信息。更多的信息,可以查阅man手册了解用法。在开源中国的这篇文章中,介绍了这三种工具在文本处理上的应用

发表评论

电子邮件地址不会被公开。 必填项已用*标注