免费注册 查看新帖 |

ChinaUnix.net

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2722 | 回复: 7

[文本处理] 怎么把相同的行后面的字符串,合并到一行。 [复制链接]

论坛徽章:
0
发表于 2014-01-13 19:16 |显示全部楼层
比如:
  1. map1        a
  2. map1        b
  3. map1        c
  4. map2        a
  5. map2        b
  6. map2        d
  7. map3        a
  8. map3        e

  9. 处理后:
  10. map1        a        b        c
  11. map2        a        b        d
  12. map3        a        e
复制代码

论坛徽章:
0
发表于 2014-01-13 19:22 |显示全部楼层
awk '{if($1==i){printf "\t"$2}else{i=$1;printf "\n"$1"\t"$2}}' file > newfile
sed -i '1d' newfile

如果没有排序,怎么弄?

论坛徽章:
38
辰龙
日期:2013-08-21 15:45:19寅虎
日期:2014-06-09 12:52:17双鱼座
日期:2014-06-10 12:42:44巨蟹座
日期:2014-06-12 23:17:17戌狗
日期:2014-06-17 09:53:29未羊
日期:2014-10-10 13:45:41申猴
日期:2015-03-03 17:21:37亥猪
日期:2015-03-03 17:22:002015亚冠之广州富力
日期:2015-05-12 16:34:522015亚冠之卡尔希纳萨夫
日期:2015-05-24 15:24:35黄金圣斗士
日期:2015-12-02 17:25:08平安夜徽章
日期:2015-12-26 00:06:30
发表于 2014-01-13 20:53 |显示全部楼层
本帖最后由 关阴月飞 于 2014-01-13 20:56 编辑
  1. awk '{a[$1]=a[$1]FS$2}END{for (i in a)print i,a[i]}' urfile
复制代码

论坛徽章:
29
程序设计版块每日发帖之星
日期:2016-02-29 06:20:0015-16赛季CBA联赛之天津
日期:2016-08-10 10:33:1115-16赛季CBA联赛之深圳
日期:2016-08-17 15:07:2015-16赛季CBA联赛之佛山
日期:2016-11-07 11:33:5015-16赛季CBA联赛之广夏
日期:2016-11-15 09:13:31CU十四周年纪念徽章
日期:2016-11-24 14:12:25极客徽章
日期:2016-12-07 14:03:4015-16赛季CBA联赛之深圳
日期:2016-12-07 17:15:2715-16赛季CBA联赛之北京
日期:2016-12-22 09:30:0115-16赛季CBA联赛之深圳
日期:2016-12-22 10:49:2115-16赛季CBA联赛之山西
日期:2017-02-10 09:05:3215-16赛季CBA联赛之同曦
日期:2017-02-27 14:19:08
发表于 2014-01-13 22:41 |显示全部楼层
awk '{a[$1]=a[$1]?a[$1]"\t"$22}END{for(i in a)print i"\t"a[i]}' file

论坛徽章:
2
巨蟹座
日期:2013-12-07 16:51:13天秤座
日期:2013-12-11 15:12:14
发表于 2014-01-13 23:22 |显示全部楼层
回复 3# 关阴月飞


   大神, 求用sed写个。

论坛徽章:
32
处女座
日期:2013-11-20 23:41:20双子座
日期:2014-06-11 17:20:43戌狗
日期:2014-06-16 11:05:00处女座
日期:2014-07-22 17:30:47狮子座
日期:2014-07-28 15:38:17金牛座
日期:2014-08-05 16:34:01亥猪
日期:2014-08-18 13:34:25白羊座
日期:2014-09-02 15:03:55金牛座
日期:2014-11-10 10:23:58处女座
日期:2014-12-02 09:17:52程序设计版块每日发帖之星
日期:2015-06-16 22:20:002015亚冠之塔什干火车头
日期:2015-06-20 23:28:22
发表于 2014-01-14 00:12 |显示全部楼层
  1. awk 't&&t!=$1{print s;s=""}{t=$1;s=s?s"\t"$2:$1"\t"$2}END{print s}'
复制代码
  1. awk '{if(!a[$1]++)b[++n]=$1;c[$1]=c[$1]?c[$1]"\t"$2:$1"\t"$2}END{for(i=0;i++<n;)print c[b[i]]}'
复制代码
  1. sed -r ':1;N;s/^(\S+)\s+(.+)\n\1\s+(.+)$/\1\t\2\t\3/;t1;P;D'
复制代码

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:58:11
发表于 2014-01-14 08:48 |显示全部楼层
  1. [root@everIover ~]# awk '{a[$1]=a[$1]?a[$1]FS$2:$1FS$2}END{for(i in a)print a[i]}' i
  2. map1 a b c
  3. map2 a b d
  4. map3 a e
  5. [root@everIover ~]# cat i
  6. map1        a
  7. map1        b
  8. map1        c
  9. map2        a
  10. map2        b
  11. map2        d
  12. map3        a
  13. map3        e
  14. [root@everIover ~]#
复制代码
很经典的题目,通用的处理方式

论坛徽章:
1
CU十四周年纪念徽章
日期:2015-12-16 18:25:16
发表于 2014-01-14 09:16 |显示全部楼层
awk '{a[$1]==""?a[$1]=$2:a[$1]=a[$1]"\t"$2}END{for (i in a) printf "%s\t%s\n",i,a[i]}'  1.txt
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

基于案例的 SQL 优化实战训练营

讲师:中电福富特级专家梁敬彬,参与本次课程培训,你将收获:
1. 能编写出较为高效的 SQL;
2. 能解决70%以上的数据库常见优化问题;
3. 能得到老师提供的高效的相关工具和解决方案;
4. 能举一反三,收获不仅仅是 SQL 优化。
现在购票享受8.8折优惠!
----------------------------------------
优惠时间:2019年3月20日前

大会官网>>
  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP