• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            Prayer

            在一般中尋求卓越
            posts - 1256, comments - 190, trackbacks - 0, articles - 0
              C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

            shell的效率不如perl或Python?

            Posted on 2010-06-07 12:25 Prayer 閱讀(2621) 評論(0)  編輯 收藏 引用 所屬分類: ShellPERL
            shell文本處理方面,主要是有sed,awk這兩把刀。

            光給你個shell你進行文本處理是做不到的,當然簡單的還可以。

            perl里有正則表達式引擎,能針對文本進行拆分替換等復雜操作,關鍵是,perl不用fork出新的進程來處理這些事情,而shell需要使用管道等通過這些sed,awk的進程來處理,至少就多出部分進程的開銷。

            而且,管道這個東西,原本一個工具一次能完成的任務,在需要經過sed,和awk等多次管道。效率可想而知。

            其實你這個問題問的有點弱智,SHELL是什么?

            SHELL只是一個接口,大部分的功能全靠外部程序來完成。
            而Perl是一種語言,基本上什么事情都能做。


            老老實實學好一樣東西最實際。
            當你參加面試的時候,如果可以自信的說自己熟練使用Shell或者Perl,那就相當不錯了。
            效率之類的云云,具體問題具體分析吧,能解決工作中遇到的問題就行。


            看出來樓主比較關心文本處理,下面這個比方不一定恰當,但已經很接近了:


            • 相比較而言,awk、sed就像死板手,而perl和python是個活板手。
            • awk和sed專注于文本處理,大部分情況效率要優于perl等。很簡單,比如列文件,誰能有cat的效率高?
            • 如果你是個懶惰的SA,那就用shell吧。如果是geek或者你的工作需要復雜的邏輯,并且還會出現許多無法預知的新要求,那就用perl等好了。


            沒那么多關鍵字,是打字手誤,但是1-10萬數量級的關鍵字,在千萬行級文本文件中搜索,這個量還是有的。

            來段sed multiple keywords search in batch的代碼,歡迎其他新想法。
            1.                 local num_in_batch=300
            2.                 local batch_counter=0
            3.                 local log_display_in_batch=1000
            4.                 local bbl_counter=0
            5.                 local num_in_bl_counter=0
            6.                 declare -a bbl_arr=()
            7.                 local keyword=
            8.                 local keyword_del

            9.                
            10.                 logMsg $debug_flag null "Starting blacklist checking in batch."

            11.                 for msisdn in `cut -d: -f2 $tmpfile`; do       
            12.                         if [ $batch_counter -eq $num_in_batch ]; then
            13.                                 keyword="${keyword}$msisdn"
            14.                                 bbl_arr=(`sed -rn "/$keyword/p" $filter_file`)
            15.                                 local num=${#bbl_arr[@]}
            16.                                 ((num_in_bl_counter+=num))
            17.                                 if [ $num -gt 1 ]; then
            18.                                         keyword_del=`echo ${bbl_arr[@]} | tr " " "|"`
            19.                                         sed -ri "/${keyword_del}/d" $inputfile
            20.                                 fi
            21.                                 keyword=
            22.                                 batch_counter=0
            23.                         else
            24.                                 keyword="${keyword}$msisdn|"
            25.                         fi
            26.                         if [ $((bbl_counter%log_display_in_batch)) -eq 0 ]; then
            27.                                 logMsg $debug_flag null "$bbl_counter MSISDN processed."
            28.                         fi
            29.                         ((batch_counter++))
            30.                         ((bbl_counter++))
            31.                 done
            復制代碼
            国产精品久久久福利| 武侠古典久久婷婷狼人伊人| 亚洲国产精品一区二区久久hs| 一本久久综合亚洲鲁鲁五月天| 一极黄色视频久久网站| 浪潮AV色综合久久天堂| 91精品国产高清久久久久久91| 久久精品国产亚洲Aⅴ香蕉| 国内精品久久久久影院薰衣草| 欧洲人妻丰满av无码久久不卡 | 久久精品国产99国产精品导航 | 国产精品99精品久久免费| 99久久99久久精品国产| 欧美精品国产综合久久| 狠狠狠色丁香婷婷综合久久俺| 欧美大战日韩91综合一区婷婷久久青草| 亚洲va中文字幕无码久久| 久久人人爽人人爽人人片AV麻豆 | 久久婷婷国产麻豆91天堂| 久久精品桃花综合| 久久国产精品波多野结衣AV | 久久久噜噜噜久久中文字幕色伊伊| 97久久国产亚洲精品超碰热| 色综合久久夜色精品国产| 久久狠狠一本精品综合网| 国产成人无码久久久精品一| 99久久夜色精品国产网站| 无夜精品久久久久久| 欧美一级久久久久久久大| 青青草国产成人久久91网| 精品国际久久久久999波多野| 亚洲AV乱码久久精品蜜桃| 久久久久亚洲精品日久生情| 国产69精品久久久久APP下载| 色偷偷91久久综合噜噜噜噜| 久久久久无码精品| 日本亚洲色大成网站WWW久久| 国产精品99久久久久久www| 亚洲一区二区三区日本久久九| 久久99国产亚洲高清观看首页| 四虎国产精品免费久久久|