<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无码乱码国产精品fc2| 亚洲国产成人久久综合一| 亚洲av乱码一区二区三区香蕉 | 亚在线观看免费视频入口| 最近中文字幕mv免费高清在线 | 粉色视频成年免费人15次 | 婷婷亚洲综合一区二区| 99久久免费中文字幕精品| 亚洲免费日韩无码系列| 亚洲av成人无码网站…| 国产真人无码作爱免费视频 | 在线91精品亚洲网站精品成人| 久久久精品免费国产四虎| 国产成人综合久久精品免费| 亚洲AV无码成人精品区天堂| 亚洲中文无码亚洲人成影院| 国产日韩一区二区三免费高清| 国产精品免费看久久久久| 亚洲高清免费在线观看| 99久久免费国产精品热| 免费日本黄色网址| 精品久久久久久亚洲综合网| 精品国产污污免费网站入口在线| 国产精品视频免费一区二区 | 亚洲色欲色欲www| 亚洲av无码专区国产不乱码| 无码区日韩特区永久免费系列| 亚洲AV综合色一区二区三区| 精品97国产免费人成视频| 亚洲午夜爱爱香蕉片| 亚洲欧美日韩久久精品| 免费可以在线看A∨网站| 亚洲午夜在线播放| 女人被男人躁的女爽免费视频 | 亚洲AⅤ永久无码精品AA| 亚洲狠狠婷婷综合久久蜜芽| 永久免费AV无码网站在线观看|