+ -
当前位置:首页 → 问答吧 → awk 合并多个文件并排序

awk 合并多个文件并排序

时间:2011-05-19

来源:互联网

各位大牛好,我知道在CU里以前有人问过这个问题,只是我理解能力有限,不能活学活用。希望各位大牛不拍砖,这个问题困扰了我好多天。
原始数据:
file1:
==========
TIME VOD4 LIVE4
00:00 175 84
00:05 170 80
00:10 160 81
00:15 162 81
00:20 139 78
00:25 123 123

file2:
==========
TIME VOD5 LIVE5
00:00 175 84
00:05 170 80
00:10 160 81
00:15 162 81
00:20 139 78
00:45 24 24

file3:
==========
TIME VOD6 LIVE6
00:00 221 36
00:05 224 38
00:10 207 35
00:15 224 29
00:20 200 29


希望得到格式:
按照TIME字段列排序,如果一个时间只存在一个文件中,其他文件的这个时间段打印“-”(如file1中的00:25时间,file2中的00:45时间)
TIME        VOD4        LIVE4        VOD5        LIVE5        VOD6        LIVE6       
00:00        175        84        175        84        221        36       
00:05        170        80        170        80        224        38       
00:10        160        81        160        81        207        35       
00:15        162        81        162        81        224        29       
00:20        139        78        139        78        200        29       
00:25        123        123        -        -        -       -
00:45        -        -        24        24        -       -

作者: ontherd   发布时间: 2011-05-19

awk '{a[$1]=$1;b[$1,ARGIND]=$2FS$3}END{c=asort(a);for(i=1;i<=c;i++){printf a[i];for(j=1;j<=ARGIND;j++){d=b[a[i],j];printf d?" "d:" - -"}print ""}}' file*

作者: ziyunfei   发布时间: 2011-05-19

顶紫哥。学习。

作者: zooyo   发布时间: 2011-05-19

热门下载

更多