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 - -
原始数据:
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
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28