<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    敏捷、分布式、ALM過程自動化、企業應用架構
    posts - 14, comments - 0, trackbacks - 0, articles - 1
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    Example 2-2. A program for finding the maximum recorded temperature by year from NCDC weather records

    #!/usr/bin/env bash

    for year in all/*

    do

      echo -ne `basename $year .gz`"\t"

      gunzip -c $year | \

        awk '{ temp = substr($0, 88, 5) + 0;

               q = substr($0, 93, 1);

               if (temp !=9999 && q ~ /[01459]/ && temp > max) max = temp }

             END { print max }'

    done

     

    使用linux腳本打印每年最高溫度,先解釋一下該腳本幾個注意點。

    腳本目的是發現每年的最高溫度,第一句for year in 后的all/*表示在名稱為all的文件夾下每年度的溫度信息都以 1990.gz 方式存在。使用gunzip方式解壓并打印,對打印的內容使用awk函數進行處理,獲取最大溫度,單個文件處理完畢后打印max

     

    在上一篇中獲取的數據包是這樣,年度為文件夾,當中包含若干個溫度詳情文件。

    E:\testData\1990\010010-9999-1990.gz

    E:\testData\1990\010014-9999-1990.gz

    E:\testData\1990\010015-9999-1990.gz

    E:\testData\1990\010016-9999-1990.gz

     

    從后面Appendix C的描述中得知,實際上作者對這樣的數據進行了處理,因為hadoop在處理大量的小文件時無法達到很高的效率,因此作者使用hadoop將小文件合并,并且給出了代碼。

     

    我比較希望能夠使用腳本處理,將所有的gz解壓之后,合并成為一個文件,打包成gz的格式,這樣就能完全符合之前那段腳本的處理方式。所以,腳本如下:

    packyear

    #! /bin/sh

    # /usr/data/packyear

     

    # unzip all gz files in data

    for yeards in data/*

    do

           # unzip all gz files in year directory

           for gzfile in $yeards/*

           do

                  gunzip $gzfile

           done

          

           # cat all content to year file

           cat $yeards/* | head -2 >> $yeards.tc

     

           # remove year directory

           rm -rf $yeards

           mv $yeards.tc $yeards

     

           # zip the tc file

           gzip $yeards

    done

     

    根據實際路徑改寫的計算最大溫度的腳本

    maxyear

    #! /bin/sh

    # /usr/data/ maxyear

     

    for year in /usr/data/*

    do

      basename $year .gz

      gunzip -c $year | \

        awk '{temp=substr($0, 88, 5)+0;

            q=substr($0, 93, 1);

            if(temp !=9999 && q ~ /[01459]/ && temp > max) max = temp}

          END {print max}'

    done

    這個腳本最終顯示出來會是:

    1990

    3

    這樣的格式。由于對數據結構的不熟悉,所以不確定顯示出來的數據是否正確,但是基本的腳本和數據操作方式就是這樣了。

    主站蜘蛛池模板: 亚洲AV乱码久久精品蜜桃| 亚洲中文字幕无码爆乳av中文| 亚洲精品私拍国产福利在线| 一级做a爰片性色毛片免费网站 | 成人无码WWW免费视频| 国产成人精品日本亚洲专区| 香蕉国产在线观看免费| 亚洲片一区二区三区| 亚洲精品免费在线| 久久亚洲美女精品国产精品 | 精品免费人成视频app| 四虎影永久在线高清免费| 久久久久亚洲av无码专区| 最近2019免费中文字幕6| 亚洲精品白色在线发布| 最新欧洲大片免费在线 | 67194在线午夜亚洲| 国产免费网站看v片在线| 亚洲AV日韩AV永久无码绿巨人| 久久99精品视免费看| 亚洲国产美女视频| 免费观看的毛片手机视频| 羞羞漫画小舞被黄漫免费| 久久精品国产亚洲精品| 久99久精品免费视频热77| 亚洲最大的视频网站| 免费涩涩在线视频网| 国产精品九九久久免费视频| 亚洲高清视频在线观看| 91视频国产免费| 二级毛片免费观看全程| 91亚洲精品视频| 亚洲a一级免费视频| 亚洲熟妇久久精品| 我的小后妈韩剧在线看免费高清版 | 亚洲精品国产美女久久久| 蜜臀AV免费一区二区三区| 亚洲国产精品精华液| 日本一区免费电影| a毛看片免费观看视频| 亚洲男人天堂2022|