shell+sed+awk
嚴格的講, shell不是一種編程語言, 可是shell有本身的控制流結構(判斷,循環,選擇),運算以及函數等編程語言特性, 加上shell命令組織在一塊兒構成腳本, 可以完成通常編程語言作到的事情.sed和awk通常融入到shell裏面應用, bash是shell的一種, 也是linux的默認shell. shell是linux內核和用戶命令的溝通橋樑, 你輸入的任何命令都是經過shell去解釋, linux內核才知道你要作什麼.
三者中功能最弱,沒有調試程序,大多數操做必須經過運行其餘程序才能執行,因此須要更多時間、內存並在進程表中佔有位置。內置的算術運算頗有限,數組下標必須是數字等。但它對運行環境要求低,小巧便捷,是學習系統腳本編程,系統維護和操做的基礎。系統管理的基礎是shell, 這取決於shell的橋樑做用. 能夠說, shell腳本幾乎能夠完成全部linux下的自動化任務.html
Perl
設計之初就是爲了方便編寫複雜高效的系統腳本,它也是應該最爲普遍的腳本編程語言。它在編程方面至關於瑞士軍刀,對字符、文本文件處理能力很強,用做文本處理比較好,能夠做爲系統的輔助工具,之前要求 shell+sed+awk+C才能完成的任務,只需perl腳本就能夠完成了。並且應用領域一直在拓寬,支持面向對象程序設計。perl最大的優點在於它的字符串模式匹配能力,其提供了一個十分強大的正則表達式匹配引擎。然而perl語言的晦澀和對符號語法的過分使用,讓解讀變得很困難。這些語法令初學者不得精要,爲他們的學習帶來不小的阻礙。一般當你想閱讀幾個月前寫的perl腳本的時候都不得不求助參考書。python
Python
面向對象的動態公共語言,適於腳本編程和快速開發,它最顯著的特色是做爲編譯語言(如C)和腳本語言(如perl)之間的橋接語言,它具備的強大功能,可擴充性,跨平臺能力好及徹底面向對象的特徵使其成爲大規模應用程序開發工具。
perl和python相比於shell, 是嚴格意義上的編程語言(舉個不恰當的例子,shell至關於批處理,如dos下的bat文件,固然要比bat強大了許多許多,perl至關與c語言). 功能比shell固然會複雜不少, 語法上也稍微複雜一些.
perl/python處理某些問題可能比shell簡單,高效, 能夠說是提高系統管理水平的進階手段.linux
總結
因而可知Perl比shell+sed+awk更強大,但學習二者並不衝突,一般是學習shell作爲腳本編程的入門基礎。而Python在應用領域則與前二者有很大的差異,無太大的可比性。面向不一樣的任務,能夠只需用到其中的一種,也可能三種都要用到,因此究竟該學誰不學誰,須要由面對的任務來決定。總之, shell是基礎, 其餘是進階輔助正則表達式
bash - GNU Bourne-Again SHell 相似dos的command,沒他你就別想執行命令
gawk - pattern scanning and processing language 主要用於文本相關的處理的編程語言
sed - a Stream EDitor 用於對字符流進行操做
perl - Practical Extraction and Report Language 一種程序語言,特別用於對字符串處理和做爲cgi程序
後三種在linux中是經過bash進行調度執行的
bash你必須用,其餘三個要看你的須要了,呵呵
bash、awk、sed、perl
聯繫是均可以做爲 命令解釋器
功能大小
大=====〉小 shell
perl /*powerful like ksh, fast, use widely
awk /*power two, basic using in shell script, also write awk script
bash, provide user interface, also provide some command
sed , line editor oriented lines
perl 是一種很強的編程語言,你幾乎能夠用它作任何事情,awk 則簡單多了,主要用來處理具備必定格式的文件。若是是 shell 編程,awk、sed 等都是不可缺乏的工具,固然 perl 徹底能夠替代 awk、sed、grep 等命令編程
轉自 http://raclinux.blog.163.com/blog/static/1899371622012218104842567/
http://blog.sina.com.cn/s/blog_5edf897701010hxt.html
http://www.360doc.com/content/12/0501/23/507289_208001203.shtml數組