免费注册 查看新帖 |

Chinaunix

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

[文本处理] 求助AWK针对两个文本的处理 [复制链接]

论坛徽章:
2
射手座
日期:2013-10-29 16:22:32丑牛
日期:2013-11-25 16:29:17
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-06-25 13:43 |只看该作者 |倒序浏览
A文件全部是手机号码

  1. 13341001234
  2. 13341011234
  3. 13340981234
  4. 13340991234
  5. 15697291234
  6. 15697292234
  7. 15697301234
复制代码
B文件是手机号码归属地

  1. 1334100        北京
  2. 1334101        北京
  3. 1334102        北京
  4. 1334103        北京
  5. 1334104        北京
  6. 1334098        四川 成都市
  7. 1334099        四川 成都市
  8. 1569729        湖北 咸宁市
  9. 1569730        湖南 长沙市
  10. 1569731        湖南 长沙市
  11. 1569732        湖南 湘潭市
  12. 1569733        湖南 株洲市
复制代码
求归属地的号码的总数

如上我给了7个号码就是
北京 2
四川 成都市 2
湖北 咸宁市 2
湖南 长沙市 1


之前这样写的   发现有问题 A文件假设前7位相同 就会被当做一行数据了,所以后面匹配也就算1个了 也就是我现在的错误 求大神帮忙解决一下
awk 'NR==FNR{a[substr($0,1,7)]=1}NR>FNR{if($1 in a) b[$2" "$3]+=1}END{for(i in b) print i,b}' A.txt B.txt

北京  2
四川 成都市 2
湖北 咸宁市 1
湖南 长沙市 1

论坛徽章:
0
2 [报告]
发表于 2014-06-25 13:54 |只看该作者
试试先处理B,用一个数组把前7位和所在地关联起来,再处理A。

论坛徽章:
16
IT运维版块每日发帖之星
日期:2015-08-24 06:20:00综合交流区版块每日发帖之星
日期:2015-10-14 06:20:00IT运维版块每日发帖之星
日期:2015-10-25 06:20:00IT运维版块每日发帖之星
日期:2015-11-06 06:20:00IT运维版块每日发帖之星
日期:2015-12-10 06:20:00平安夜徽章
日期:2015-12-26 00:06:302016猴年福章徽章
日期:2016-02-18 15:30:34IT运维版块每日发帖之星
日期:2016-04-15 06:20:00IT运维版块每日发帖之星
日期:2016-05-21 06:20:00综合交流区版块每日发帖之星
日期:2016-08-16 06:20:002015七夕节徽章
日期:2015-08-21 11:06:17IT运维版块每日发帖之星
日期:2015-08-14 06:20:00
3 [报告]
发表于 2014-06-25 14:03 |只看该作者


match就好了啊,不用substring.

匹配一次,a[$x]++一次。

论坛徽章:
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
4 [报告]
发表于 2014-06-25 14:05 |只看该作者
  1. awk 'NR==FNR{t=$1;$1="";a[t]=$0;next}{p=substr($1,1,7);b[a[p]]++}END{for(i in b)print i,b[i]}'  B.txt A.txt
复制代码

论坛徽章:
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
5 [报告]
发表于 2014-06-25 14:06 |只看该作者
  1. awk 'FNR==NR{++a[substr($0,1,7)]}a[$1]{b[$2FS$3]+=a[$1]}END{for(i in b)print i,b[i]}' a b
复制代码

论坛徽章:
2
射手座
日期:2013-10-29 16:22:32丑牛
日期:2013-11-25 16:29:17
6 [报告]
发表于 2014-06-25 14:12 |只看该作者
回复 4# reyleon


    六子真有速度 谢谢!可用

论坛徽章:
2
射手座
日期:2013-10-29 16:22:32丑牛
日期:2013-11-25 16:29:17
7 [报告]
发表于 2014-06-25 14:12 |只看该作者
回复 5# 关阴月飞


    可以用 谢谢~

论坛徽章:
7
亥猪
日期:2013-10-10 17:00:29辰龙
日期:2013-10-12 16:23:19卯兔
日期:2013-11-18 17:01:27金牛座
日期:2014-09-09 10:17:052015七夕节徽章
日期:2015-08-21 11:06:172015亚冠之柏太阳神
日期:2015-09-25 13:56:42数据库技术版块每日发帖之星
日期:2016-08-06 06:20:00
8 [报告]
发表于 2014-06-25 14:23 |只看该作者
  1. awk 'NR==FNR{a[$1]=$2;next}{t=substr($0,1,7);b[a[t]]++}END{for(i in b)print i,b[i]}' b a
复制代码

论坛徽章:
93
2015年辞旧岁徽章
日期:2019-10-10 10:51:15CU大牛徽章
日期:2014-02-21 14:21:56CU十二周年纪念徽章
日期:2020-10-15 16:55:55CU大牛徽章
日期:2014-02-21 14:22:07羊年新春福章
日期:2019-10-10 10:51:39CU大牛徽章
日期:2019-10-10 10:55:38季节之章:春
日期:2020-10-15 16:57:40ChinaUnix元老
日期:2019-10-10 10:54:42季节之章:冬
日期:2019-10-10 10:57:17CU大牛徽章
日期:2014-02-21 14:22:52CU大牛徽章
日期:2014-03-13 10:40:30CU大牛徽章
日期:2014-02-21 14:23:15
9 [报告]
发表于 2014-06-25 14:46 |只看该作者
回复 1# kakaliu

咦,这个统计值在前面,怎么弄到后面呢。。。
  1. [seesea@UC ~]$ uniq -c <( join -o2.2 2.3 <( sort <(cut -c 1-7 A) ) <( sort B ) )
  2.       2 四川 成都市
  3.       2 北京
  4.       2 湖北 咸宁市
  5.       1 湖南 长沙市
复制代码

论坛徽章:
0
10 [报告]
发表于 2014-06-25 14:58 |只看该作者
回复 9# seesea2517

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

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP