免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: cai6642113
打印 上一主题 下一主题

[文本处理] [求助]一组数据整理办法 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2013-04-17 16:47 |只看该作者
看了半天,还是没看懂。。

论坛徽章:
0
12 [报告]
发表于 2013-04-19 11:03 |只看该作者
回复 4# 关阴月飞


多谢大神,受教了,如果我还有个文件B,要在最后输出的$3与n 之间再加一个B文件中的一列字段,只要$1,$2 完全相同就插入文件B的$3到输出的结果的$4,应该怎么做啊


文件B的内容
898 0762  12345
220 022    54321
898 0898   45678
输出的结果
898 0762  40 12345 2

220 022  42 54321 2

898 0898  12 45678 2
   

论坛徽章:
39
辰龙
日期:2013-08-21 15:45:192015亚冠之广州富力
日期:2015-05-12 16:34:52亥猪
日期:2015-03-03 17:22:00申猴
日期:2015-03-03 17:21:37未羊
日期:2014-10-10 13:45:41戌狗
日期:2014-06-17 09:53:29巨蟹座
日期:2014-06-12 23:17:17双鱼座
日期:2014-06-10 12:42:44寅虎
日期:2014-06-09 12:52:172015亚冠之卡尔希纳萨夫
日期:2015-05-24 15:24:35黄金圣斗士
日期:2015-12-02 17:25:0815-16赛季CBA联赛之吉林
日期:2017-06-24 16:43:52
13 [报告]
发表于 2013-04-19 13:05 |只看该作者
本帖最后由 关阴月飞 于 2013-04-19 13:07 编辑

回复 12# cai6642113

处理过程分为三个步骤(三段AWK),懒得去想别的方法了:

1. 第一个:完成 "以红色字段为条件完全相同的为一组,蓝色字段数值相加"
2. 第二个:完成 "分别计算黄色字段去重后的条数"
3. 第三个:完成 "还有个文件B,要在最后输出的$3与n 之间再加一个B文件中的一列字段,只要$1,$2 完全相同就插入文件B的$3到输出的结果的$4"
  1. awk -F, '{a[$7" "$8]+=$13;b[$7" "$8]=$2?b[$7" "$8]" "$2:$2}END{for(i in a)print i,a[i],b[i]}'  A |\
  2. awk '{for(i=4;i<=NF;i++)if(!a[$i]++)n++;print $1,$2,$3,n;n=0}' |\
  3. awk 'FNR==NR{a[$1$2]=$NF;next}{n=$NF;$NF=a[$1$2];print $0,n}' B -
复制代码

  1. [root@awktest]# cat A
  2. 20,13016236390,0,0,0,0,898,0898,9999999999,,2,0,6,0,0,0,0
  3. 20,13016236391,0,0,0,0,898,0898,9999999999,,2,0,6,0,0,0,0
  4. 21,13016240088,0,0,0,0,898,0762,9999999999,,2,0,20,0,0,0,0
  5. 24,13032256323,0,0,0,0,220,022,9999999999,,2,0,21,0,0,0,0
  6. 24,13032256324,0,0,0,0,220,022,9999999999,,2,0,21,0,0,0,0
  7. [root@awktest]# cat B
  8. 898 0762  12345
  9. 220 022    54321
  10. 898 0898   45678
  11. [root@awktest]# awk -F, '{a[$7" "$8]+=$13;b[$7" "$8]=$2?b[$7" "$8]" "$2:$2}END{for(i in a)print i,a[i],b[i]}'  A |\
  12. awk '{for(i=4;i<=NF;i++)if(!a[$i]++)n++;print $1,$2,$3,n;n=0}' |\
  13. awk 'FNR==NR{a[$1$2]=$NF;next}{n=$NF;$NF=a[$1$2];print $0,n}' B -
  14. 898 0762 20 12345 1
  15. 220 022 42 54321 2
  16. 898 0898 12 45678 2
复制代码

论坛徽章:
0
14 [报告]
发表于 2013-04-19 14:44 |只看该作者
太感谢了!!!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP