下载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中的内置变量,代表行数。