Efficiency in Shell

來源:互聯網
上載者:User

標籤:blog   http   使用   strong   ar   for   檔案   資料   art   

  最近在寫一個shell指令碼, 由於該指令碼對效率有較高的要求, 所以查閱了一些文章. 感覺這篇文章寫得確實不錯, 文章中的例子,確實很棒! 所

以我把他們提取出來:

@1:執行個體:

需求:計算1到100000累加結果

方法1:採用bash  shell的數值計算

# time for((i=0;i<=100000;i++)); do ((sum+=i)); done ; echo $sum

real    0m1.134s

user    0m1.080s

sys     0m0.048s

5000050000

方法2:採用awk的數值計算

# time awk ‘BEGIN{while(i++<100000)sum+=i; printf "%d", sum;}‘ 

5000050000

real    0m0.029s

user    0m0.020s

sys     0m0.000s

執行個體結果分析:同等的累加運算,採用shell的數值計算耗時1.134秒,採用awk工具只需要0.029秒。實驗結果表明,適當的採用工具軟體,

能夠明顯提高shell指令碼的執行效率。    

 

@2:執行個體: 正則效率。

需求:某文本以空格和/進行分隔,擷取第五列的內容.        

方法1:採用正則[ /]分別匹配二種分隔字元,取得第五列

# time awk -F‘[ /]‘ ‘{print $5}‘ a.txt  >/dev/null

real    0m17.717s

user    0m14.749s

sys     0m2.844s

方法2:實際資料分析中發現,可以採用單字元解析的方式,首先根據“空格”分隔字元取得第4列,再利用“/”分隔字元取得第二列。

# time awk ‘{print $4}‘ a.txt |awk -F/ ‘{print $2}‘ >/dev/null

real    0m0.565s

user    0m0.224s

sys     0m0.688s

執行個體結果分析:awk採用-F指定分隔字元,在多分隔字元情況下,會啟用正則去解析記錄,增加了函數調用,和字串匹配的消耗,效率上理所

當然的比不上預設的空格或單字元分隔字元採用的簡單的字元比較方式,儘管如此,方法2依賴於對需求的進一步分析,適用的需求範圍沒有

使用正則那麼簡便靈活。

 

@3:執行個體:sed應用,讀取指定行

方法1:sed -n ‘45,50p‘ filename

方法2:sed -n ‘51q;45,50p‘ filename

執行個體結果分析:方法2在方法1基礎上增加了一個判斷,當檔案讀取到第51行時即時退出。避免檔案後續部分的遍曆,在大資料量處理上能

夠很大的提高執行效率。

 

@4:執行個體:sed應用,文本替換

方法1:sed ‘s/foo/bar/g‘ filename

方法2:sed ‘/foo/ s/foo/bar/g‘ filename

執行個體結果分析:sed支援採用正則進行匹配和替換,考慮字串替換的需求中,不防加上地址以提高速度。執行個體中通過增加一個判斷邏輯,

採用“事先匹配”代替“直接替換”,由於sed會保留前一次的正則匹配環境,不會產生冗餘的正則匹配,因此方法2具有比方法1更高

的效率

 

@5:awk的特色資料結構:雜湊數組,也稱關聯陣列。雜湊數組中的每個單元包括二個元素:單元鍵(key)及單元值(values)。雜湊結構

的效益體現在以較小的記憶體空間實現大的資料空間上的資料存放,節省了資料占存空間;同時雜湊數組中的資料訪問是隨機訪問,不需要

遍曆而直接通過雜湊函數直接存取數組單元取值,節省了資料查詢時間。

 

Reference:

shell指令碼效率: http://blog.csdn.net/yanook/article/details/8395482

Efficiency in Shell

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.