免费注册 查看新帖 |

Chinaunix

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

[文本处理] 请教个文本处理的问题 [复制链接]

论坛徽章:
2
射手座
日期:2013-10-29 16:22:32丑牛
日期:2013-11-25 16:29:17
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-07-15 15:43 |只看该作者 |倒序浏览
A.TXT
13012345678
13112345678
13412345678
18912345678

全部是手机号码

B.TXT
是手机号段表
130 联通
131 联通
132 联通
133 电信
134 移动
135 移动
136 移动
137 移动
138 移动
139 移动
145 联通
147 移动
150 移动
151 移动
152 移动
153 电信
155 联通
156 联通
157 移动
158 移动
159 移动
180 电信
182 移动
185 联通
186 联通
187 移动
188 移动
189 电信

现在需求1 想要的结果就是拿A 跟B文件比较之后 得出的结果为
13012345678 联通
13112345678 联通
13412345678 移动
18912345678 电信

需求2 假设号码匹配了 能不能直接生成3个文件 将移动号码全部输出到y移动.txt  联通号码输出到l联通.txt 电信号码输出到d电信.txt

因为平常数据不大 都是用excel 的vlookup去做,担心下次数据太大 excel弄起来太卡,感觉这个用shell去做应该容易很多 求大神帮忙弄下!谢谢

论坛徽章:
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
2 [报告]
发表于 2014-07-15 15:50 |只看该作者
需求1:
  1. awk 'NR==FNR{a[$1]=$2;next}{print $0,a[substr($0,1,3)]}' B.TXT A.TXT
复制代码
需求2:
  1. awk 'NR==FNR{a[$1]=$2;next}{t=substr($0,1,3);print $0 > a[t]".txt"}' B.TXT A.TXT
复制代码

论坛徽章:
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
3 [报告]
发表于 2014-07-15 15:53 |只看该作者
回复 1# kakaliu

需求1
  1. awk 'NR==FNR{a[$1]=$2;next} {print $0" "a[substr($0,1,3)]}' B.txt A.txt
  2. 13012345678 联通
  3. 13112345678 联通
  4. 13412345678 移动
  5. 18912345678 电信
复制代码
需求2
  1. awk 'NR==FNR{a[$1]=$2;next} {if(a[substr($0,1,3)]=="移动")dest="y移动.txt";else if(a[substr($0,1,3)]=="联通")dest="l联通.txt";else if(a[substr($0,1,3)]=="电信")dest="d电信.txt";print>dest}' B.txt A.txt
复制代码

论坛徽章:
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
4 [报告]
发表于 2014-07-15 15:54 |只看该作者
回复 2# yestreenstars
第二题我2B了,文件名存在数组里了。。。

   

论坛徽章:
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
5 [报告]
发表于 2014-07-15 16:10 |只看该作者
回复 3# Herowinter

我没注意到移动、联通、电信前面还有一个字母,不过,不要在意这些细节~
   

论坛徽章:
9
寅虎
日期:2013-12-02 12:49:22巨蟹座
日期:2014-07-18 18:13:34卯兔
日期:2014-07-25 14:43:08子鼠
日期:2014-07-26 10:10:51酉鸡
日期:2014-07-31 15:09:562015亚冠之本尤德科
日期:2015-05-19 09:27:382015亚冠之卡尔希纳萨夫
日期:2015-06-20 10:30:212015亚冠之阿尔纳斯尔
日期:2015-07-01 20:46:062015亚冠之城南
日期:2015-07-15 21:12:00
6 [报告]
发表于 2014-07-15 16:26 |只看该作者
awk -vFIELDWIDTHS="3 999" '{a[$1]=a[$1]""$2}END{for(i in a){if(length(a[i])> print i""a[i]}}' a.txt b.txt 貌似有点拙劣

论坛徽章:
5
子鼠
日期:2014-05-15 13:49:32子鼠
日期:2014-07-16 11:16:45卯兔
日期:2014-07-17 11:34:49巨蟹座
日期:2014-07-21 12:05:002015亚冠之柏太阳神
日期:2015-07-30 16:26:53
7 [报告]
发表于 2014-07-15 16:36 |只看该作者
awk 'NR==FNR{a[$1]=$2;next}{t=substr($0,1,3);print $0 > a[t]".txt"}' B.TXT A.TXT   哈哈,这2个用法前2天的帖子里都有提过,print $0 > a[t]".txt"看到了ss大神的影子,先mark一下,回家再找几个题练习消化下.

论坛徽章:
0
8 [报告]
发表于 2014-07-15 17:06 |只看该作者
手机号段表挺准的啊,我的15220783306果然是移动的,抄走了。

论坛徽章:
2
射手座
日期:2013-10-29 16:22:32丑牛
日期:2013-11-25 16:29:17
9 [报告]
发表于 2014-07-15 17:08 |只看该作者
回复 2# yestreenstars


星辰大大果然厉害 !thx

   

论坛徽章:
7
天秤座
日期:2014-08-07 13:56:30丑牛
日期:2014-08-27 20:34:21双鱼座
日期:2014-08-27 22:02:21天秤座
日期:2014-08-30 10:39:11双鱼座
日期:2014-09-21 20:07:532015年亚洲杯之日本
日期:2015-02-06 14:00:282015亚冠之大阪钢巴
日期:2015-11-02 14:50:19
10 [报告]
发表于 2014-07-15 17:11 |只看该作者
泄露机密了{:3_184:}
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP