曾经,我熟练操做grep、awk、sed,甚至自认对sed尚算精通,我一度爱上了写脚本。可是随着写脚本的次数多了,需求复杂了,我深深的感觉到shell的无奈。html
例如,我屡次遇到过相似下面这种恶心的需求:python
sed ... | awk ...
其中sed要操做第2到第5行,同时awk要操做中间的第3行,在awk操做第3行的时候,sed的第2行不能丢弃。正则表达式
对于shell管道来讲这是不可能实现的(注:合理使用while read line能实现),由于它经过管道在各命令之间传递数据,这使得管道前面的数据必须传递给管道后面,而数据一被管道传递就从管道左边程序的缓存中消失了,也就是不可重用了。shell
因而我学了Perl,在这以前我也学了python,可是学过Perl以后,在我以为shell难以实现的时候,个人第一想法几乎老是使用Perl去实现脚本,而不是用python。编程
本文我要分享的是一行式Perl程序,它彻底能够替代grep+sed+awk,且功能还更强大。文章篇幅稍大,可算是一本较薄的书,但除了专门的perl正则表达式以外(若是没有学过编程语言的正则的话。我也写过一篇很是详细又0基础友好的Perl正则,若有需求,可参见Perl正则表达式超详细教程),其它的都绝对基础,我解释的也足够简单,只要认真看,它真的比awk更简单。按照我如今的感觉,我花上几天时间去深刻掌握awk,真不如去学Perl一行式。缓存
Perl一行式系列文章:Perl一行式程序编程语言
若是以为文章不错,请帮忙点下右下角的赞。感谢!!!code