Awk、Grep/Sed/Awk組合及Perl進行文本處理效能比較

來源:互聯網
上載者:User




1.引言

從未經處理資料檔案中擷取各種類型的資料,將其去除前序後輸出到根據資料類型命名的不同檔案中。這一分揀和格式化資料的任務是很多資料分析處理的基本部分。實現這一任務可以選擇多種可能的方式:用Awk、grep/sed/awk組合或者Perl來實現。




為了比較這三種實現方式的效能,我們選擇了同樣的資料進行測試,分別用三種方式編程,實現同樣的功能,並且比較其已耗用時間效能。

我們使用的各種工具及作業系統版本如下:
     grep (GNU grep) 2.5.1
     sed  GNU sed version 4.1.2
     awk  GNU Awk 3.1.3
     Perl This is perl, v5.8.5 built for i386-linux-thread-multi
     Linux version 2.6.9-42.ELsmp (bhcompile@hs20-bc1-1.build.redhat.com) (gcc version 3.4.6 20060404 (Red Hat 3.4.6-2)) #1 SMP Wed Jul 12 23:27:17 EDT 2006

2.演算法簡介

    三種方式中使用Awk和Perl編程是對所有檔案進行一次掃描,grep/sed/awk是對檔案進行多次掃描。

Awk方式使用其內建的欄位切分功能,並且使用其系統函數gsub實現去前序功能。

grep/sed/awk方式用grep、sed和awk完成其擅長的任務,grep進行字串搜尋、sed進行文本替換,awk進列欄位分割與輸出。

Perl方式中,主要是使用split函數進行兩此切割,一次對欄位進行切割(TAB分割),一次對前序和資料進行切割,根據dt前序欄位將相應資料輸出到不同檔案中。

3. 運行結果

時間

Awk

grep/sed/Awk

Perl

運行結果

start...t=(16:37:19)

END.t=(19:01:53)

start...t=(21:13:56)

END.t=(22:01:47)

start...t=(11:34:01)

END.t=(12:21:50)

時間

144m34s

47m51s

47m49s

4. 結論

對於對文本進行搜尋,欄位替換及切分欄位後進行格式化輸出的三種實現方式中:用gred/sed/awk組合與perl程式的已耗用時間幾乎相同,而純粹用AWK寫的程式已耗用時間則大約是以上兩種方式寫的程式的3

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.