下載iris網站的地震數據(選擇環形區域)
2011年數據獲取網址為https://service.iris.edu/fdsnws/event/1/query?starttime=2011-01-01T00:00:00&endtime=2012-01-01&lat=89&lon=179&maxradius=180&minradius=0&minmagnitude=4.5&includeallmagnitudes=true&orderby=time&format=geocsv
2010年數據獲取網址為https://service.iris.edu/fdsnws/event/1/query?starttime=2010-01-01T00:00:00&endtime=2011-01-01&lat=89&lon=179&maxradius=180&minradius=0&minmagnitude=4.5&includeallmagnitudes=true&orderby=time&format=geocsv
2009年數據獲取網址為https://service.iris.edu/fdsnws/event/1/query?starttime=2009-01-01T00:00:00&endtime=2010-01-01&lat=89&lon=179&maxradius=180&minradius=0&minmagnitude=4.5&includeallmagnitudes=true&orderby=time&format=geocsv
shell預處理地震目錄數據
分別觀察他們的有效行數
$ cat tel11.txt | awk -F'[|]' '{print $1,$2,$3,$4,$5,$11}' | wc -l
5705
$ cat tel10.txt | awk -F'[|]' '{print $1,$2,$3,$4,$5,$11}' | wc -l
6454
$ cat tel09.txt | awk -F'[|]' '{print $1,$2,$3,$4,$5,$11}' | wc -l
6756
然后合成一個文件
$ cat tel11.txt | awk -F'[|]' '{print $1,$2,$3,$4,$5,$11}' | tail -n5700 > tel09_11
$ cat tel10.txt | awk -F'[|]' '{print $1,$2,$3,$4,$5,$11}' | tail -n6449 >> tel09_11
$ cat tel09.txt | awk -F'[|]' '{print $1,$2,$3,$4,$5,$11}' | tail -n6751 >> tel09_11
篩選出2009-6-1到2011-12-31之間地震目錄,格式為:年 月 日 儒略日 時 分 秒 緯 經 深 震級
$ cat tel09_11 | sed 's/T/ /g' | sed 's/Z//g' | sed 's/-/ /g' | awk '{if ($2!=2009 || $3>=6) print $1,$2,$3,$4,$5,$6,$7,$8,$9}' | sed 's/:/ /g' > tel0906_1112
$ cat tel0906_1112 | awk '{print $1,$2,$3,strftime("%j",mktime($1" "$2" "$3" "$4" "$5" "$6)),$4,$5,$6,$7,$8,$9,$10}' > telyp0906_1112
格式化輸出,以實現不同的行對齊
$ cat telyp | awk 'BEGIN{OFS="\t"} {printf ("%4d %2d %2d %3d %2d %2d %2d %6.3f %7.3f %7.3f %3.2f\n",$1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11)}' > EQKyp.lst
下載iris網站的台站數據
下載YP台網的地震數據https://service.iris.edu/irisws/fedcatalog/1/query?net=台陣名&minlat=0&maxlat=90&maxlon=180&minlon=-180&cha=???&format=text
shell處理台站數據
分別觀察他們的有效行數,發現文件開頭三行和末尾兩行沒有數據,需要去除。
$ cat network0.txt | head -n2378 | tail -n2375 | awk -F'[|]' '{if ($4=="BHE" || $4=="BHN" || $4=="BHZ") print $1,$2,$5,$6,$16,$17}' | sort -u > sta0
但是stayp有137行,用命令 $ awk '{print $2}' sta0 | sort -u | wc -l 發現台站用127個,說明有10個重復台站,可能因為時間不重疊的原因,再sort去重的時候沒有去除。因此需要手動挑選同名台站,選擇最長的時間。
然后挑選好台站之后,保存文件stayp,並將時間格式進行調整,保留月/日/年的日期格式
$ cat sta0 | sed 's/T0/ 0/g' | sed 's/T1/ 1/g' | sed 's/T2/ 2/g' | sed 's/-/ /g' | awk '{print $1,$2,$3,$4,$6"/"$7"/"$5,$10"/"$11"/"$9}' > net0
格式化輸出,以實現不同的行對齊
$ cat net0 | awk 'BEGIN{OFS="\t"} {printf ("%2s %5s %6.3f %7.3f %8.3f %10s %10s\n",$1,$2,$3,$4,$5,$6,$7)}' > EQK0.lst
shell命令補充
替換命令:sed
用法:sed 's/查找內容/替換內容/g' filename
適用通配符:例如*和~//等
去重命令:uniq
去重方法1: uniq filename 將相鄰重復行去掉
去重方法2:sort -u filename 將亂序重復行去掉,等效於命令 $ sort -n filename | uniq
舉例:計算某列數據的平均值:
$ awk '{sum+=$1} END {print "average equal to", sum/NR, "number of variable is", NR}' filename | cat
注意NR是awk中的內置變量,代表行數。