免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 2746 | 回复: 15
打印 上一主题 下一主题

[文本处理] 这个问题应该用awk可以吧,请大虾帮忙 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-05-15 10:29 |只看该作者 |倒序浏览
一列是设备号,一列是角色id,两者是多对多的关系
规则是任意重复设备号或角色id 都算作一个人
数据如下:

aaa ccc
bbb ccc
aaa xxx
xxx xxx
bbb ddd
kkk bbb
ccc xxx
ddd aaa
eee eee
aaa eee
ppp qqq
...

期望结果数据:

aaa ccc 1
bbb ccc 1
aaa xxx 1
xxx xxx 1
bbb ddd 1
kkk bbb 2
ccc xxx 1
ddd aaa 3
eee eee 1
aaa eee 1
ppp qqq 4
...

论坛徽章:
60
20周年集字徽章-20	
日期:2020-10-28 14:04:3015-16赛季CBA联赛之北京
日期:2016-07-06 15:42:0715-16赛季CBA联赛之同曦
日期:2016-06-12 10:38:0915-16赛季CBA联赛之佛山
日期:2016-05-27 11:54:56黄金圣斗士
日期:2015-12-02 11:44:35白银圣斗士
日期:2015-11-25 14:32:43白银圣斗士
日期:2015-11-23 12:53:352015亚冠之布里斯班狮吼
日期:2015-10-21 16:55:482015亚冠之首尔
日期:2015-09-01 16:46:052015亚冠之德黑兰石油
日期:2015-08-31 11:39:192015亚冠之萨济拖拉机
日期:2015-08-28 21:06:5315-16赛季CBA联赛之广东
日期:2016-07-12 14:58:53
2 [报告]
发表于 2015-05-15 10:53 |只看该作者
没看懂

论坛徽章:
10
天蝎座
日期:2013-09-22 22:32:23程序设计版块每日发帖之星
日期:2016-08-07 06:20:00lufei
日期:2016-06-17 17:38:40程序设计版块每日发帖之星
日期:2016-06-12 06:20:002016科比退役纪念章
日期:2016-05-31 15:47:20CU十四周年纪念徽章
日期:2016-05-27 12:24:562015年亚洲杯之阿曼
日期:2015-05-03 21:01:352015年辞旧岁徽章
日期:2015-03-03 16:54:15天蝎座
日期:2013-10-20 21:05:24程序设计版块每日发帖之星
日期:2016-08-11 06:20:00
3 [报告]
发表于 2015-05-15 11:13 |只看该作者
处女贴,别这样回复 2# reyleon


   

求职 : 机器学习
论坛徽章:
79
2015年亚洲杯纪念徽章
日期:2015-05-06 19:18:572015七夕节徽章
日期:2015-08-21 11:06:172015亚冠之阿尔纳斯尔
日期:2015-09-07 09:30:232015亚冠之萨济拖拉机
日期:2015-10-21 08:26:3915-16赛季CBA联赛之浙江
日期:2015-12-30 09:59:1815-16赛季CBA联赛之浙江
日期:2016-01-10 12:35:21技术图书徽章
日期:2016-01-15 11:07:2015-16赛季CBA联赛之新疆
日期:2016-02-24 13:46:0215-16赛季CBA联赛之吉林
日期:2016-06-26 01:07:172015-2016NBA季后赛纪念章
日期:2016-06-28 17:44:45黑曼巴
日期:2016-06-28 17:44:4515-16赛季CBA联赛之浙江
日期:2017-07-18 13:41:54
4 [报告]
发表于 2015-05-15 11:24 |只看该作者
原来六神也没有看懂 回复 2# reyleon


   

论坛徽章:
780
金牛座
日期:2014-02-26 17:49:58水瓶座
日期:2014-02-26 18:10:15白羊座
日期:2014-04-15 19:29:52寅虎
日期:2014-04-17 19:43:21酉鸡
日期:2014-04-19 21:24:10子鼠
日期:2014-04-22 13:55:24卯兔
日期:2014-04-22 14:20:58亥猪
日期:2014-04-22 16:13:09狮子座
日期:2014-05-05 22:31:17摩羯座
日期:2014-05-06 10:32:53处女座
日期:2014-05-12 09:23:11子鼠
日期:2014-05-21 18:21:27
5 [报告]
发表于 2015-05-15 11:33 |只看该作者
回复 1# whb_linux

感觉这一行"eee eee 1"应该是"eee eee 4"?
  1. awk '{if($1 in a)b[$2]=a[$1];else if($2 in b)a[$1]=b[$2];else{n++;a[$1]=b[$2]=n};print $0" "a[$1]}' i
  2. aaa ccc 1
  3. bbb ccc 1
  4. aaa xxx 1
  5. xxx xxx 1
  6. bbb ddd 1
  7. kkk bbb 2
  8. ccc xxx 1
  9. ddd aaa 3
  10. eee eee 4
  11. aaa eee 1
  12. ppp qqq 5
复制代码

论坛徽章:
20
卯兔
日期:2015-01-26 22:05:142015亚冠之萨济拖拉机
日期:2015-09-10 15:15:282015亚冠之阿尔希拉尔
日期:2015-09-25 17:37:53程序设计版块每日发帖之星
日期:2015-10-03 06:20:00程序设计版块每日发帖之星
日期:2015-12-09 06:20:00CU十四周年纪念徽章
日期:2015-12-17 09:07:15程序设计版块每日发帖之星
日期:2015-12-25 06:20:34程序设计版块每日发帖之星
日期:2015-12-25 06:20:34程序设计版块每日发帖之星
日期:2015-12-25 06:20:342015亚冠之广州富力
日期:2015-08-27 19:29:56每日论坛发贴之星
日期:2015-08-26 06:20:002015亚冠之阿尔希拉尔
日期:2015-05-18 17:26:27
6 [报告]
发表于 2015-05-15 12:02 |只看该作者
没看懂需求,建议楼主解释一下最后一行ppp qqq 4是怎么来的

论坛徽章:
10
2015年亚洲杯之科威特
日期:2015-04-13 13:51:5315-16赛季CBA联赛之山东
日期:2016-01-16 18:35:0815-16赛季CBA联赛之广东
日期:2016-01-04 15:26:23程序设计版块每日发帖之星
日期:2015-11-13 06:20:002015亚冠之阿尔艾因
日期:2015-11-10 12:32:242015亚冠之阿尔沙巴布
日期:2015-05-15 18:26:49羊年新春福章
日期:2015-04-28 16:45:112015年亚洲杯之伊拉克
日期:2015-04-25 20:06:30羊年新春福章
日期:2015-04-13 13:53:2015-16赛季CBA联赛之八一
日期:2016-01-20 18:23:49
7 [报告]
发表于 2015-05-15 12:11 |只看该作者
楼主把原始数据贴出来吧,按照你给的那点数据,这哪儿跟哪儿啊?

论坛徽章:
0
8 [报告]
发表于 2015-05-15 12:34 |只看该作者
Herowinter 发表于 2015-05-15 11:33
回复 1# whb_linux

感觉这一行"eee eee 1"应该是"eee eee 4"?


因为aaa eee 归属为1 所以 eee eee 归属为1


其实示例数据给的不好,设备号和角色id值是不会相等的,我重给下示例数据吧:

aaa ccc
ooo ccc
aaa xxx
eee xxx
iii ddd
uuu bbb
ooo xxx
uuu fff
eee kkk
aaa ppp

期望数据结果
aaa ccc 1
ooo ccc 1
aaa xxx 1
eee xxx 1
iii ddd 2
uuu bbb 3
ooo xxx 1
uuu fff 3
eee kkk 1
aaa ppp 1

论坛徽章:
780
金牛座
日期:2014-02-26 17:49:58水瓶座
日期:2014-02-26 18:10:15白羊座
日期:2014-04-15 19:29:52寅虎
日期:2014-04-17 19:43:21酉鸡
日期:2014-04-19 21:24:10子鼠
日期:2014-04-22 13:55:24卯兔
日期:2014-04-22 14:20:58亥猪
日期:2014-04-22 16:13:09狮子座
日期:2014-05-05 22:31:17摩羯座
日期:2014-05-06 10:32:53处女座
日期:2014-05-12 09:23:11子鼠
日期:2014-05-21 18:21:27
9 [报告]
发表于 2015-05-15 13:17 |只看该作者
回复 8# whb_linux

那我上面的代码结果没问题啊.
  1. awk '{if($1 in a)b[$2]=a[$1];else if($2 in b)a[$1]=b[$2];else{n++;a[$1]=b[$2]=n};print $0" "a[$1]}' i
  2. aaa ccc 1
  3. ooo ccc 1
  4. aaa xxx 1
  5. eee xxx 1
  6. iii ddd 2
  7. uuu bbb 3
  8. ooo xxx 1
  9. uuu fff 3
  10. eee kkk 1
  11. aaa ppp 1
复制代码
  1. cat i
  2. aaa ccc
  3. ooo ccc
  4. aaa xxx
  5. eee xxx
  6. iii ddd
  7. uuu bbb
  8. ooo xxx
  9. uuu fff
  10. eee kkk
  11. aaa ppp
复制代码

论坛徽章:
60
20周年集字徽章-20	
日期:2020-10-28 14:04:3015-16赛季CBA联赛之北京
日期:2016-07-06 15:42:0715-16赛季CBA联赛之同曦
日期:2016-06-12 10:38:0915-16赛季CBA联赛之佛山
日期:2016-05-27 11:54:56黄金圣斗士
日期:2015-12-02 11:44:35白银圣斗士
日期:2015-11-25 14:32:43白银圣斗士
日期:2015-11-23 12:53:352015亚冠之布里斯班狮吼
日期:2015-10-21 16:55:482015亚冠之首尔
日期:2015-09-01 16:46:052015亚冠之德黑兰石油
日期:2015-08-31 11:39:192015亚冠之萨济拖拉机
日期:2015-08-28 21:06:5315-16赛季CBA联赛之广东
日期:2016-07-12 14:58:53
10 [报告]
发表于 2015-05-15 13:30 |只看该作者
本帖最后由 reyleon 于 2015-05-15 13:37 编辑

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP