序言:我爲何學Perl

曾經,我熟練操做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

相關文章
相關標籤/搜索