- 论坛徽章:
- 15
|
本帖最后由 rdcwayx 于 2010-08-23 13:38 编辑
我也写了一个,但要分开几步。感觉还是对awk里的三维数组的控制力不够啊。
# 先调整格式,使得每行都有日期。- awk '/\// {a=$1;print;next}{print a,$0}' file1 > temp1
- awk '/\// {a=$1;print;next}{print a,$0}' file2 > temp2
复制代码 #得出结果,顺便将结果按照日期和总计的大小排序 (注意这个可以输出 set.daiwa.co.jp的统计, 这个域名只出现在file1, 不出现在file2, 但是楼主似乎不需要这个。 如果不要求的话,将下面的END部分去掉就可以了。)- awk '
- NR==FNR{f=FILENAME;a[$1];b[$1 FS $2 FS f]=$3;c[$1 FS $2];next}
- {
- s=$1 FS $2 FS f
- if (($1 in a)&&(s in b)) print $1,$2,b[s],$3,$3+b[s]
- if (!(s in b)) print $1,$2,0,$3,$3
- d[$1 FS $2]
- }
- END { for (i in c) { if (!(i in d)) print i,b[i FS f],"0",b[i FS f] }}
- ' temp1 temp2|sort -k1.1,1.10 -k5.1,5.10nr >temp3
复制代码 # 再去掉日期部分,只保留和输出第一个日期。- awk '{
- if (a[$1])
- {printf "\t\t%-20s\t%d\t%d\t%d\n",$2,$3,$4,$5}
- else
- {a[$1]=$1;printf "%s\t%-20s\t%d\t%d\t%d\n",$1,$2,$3,$4,$5}}' temp3
复制代码 |
|