免费注册 查看新帖 |

Chinaunix

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

[文本处理] 求助以下文本该如何处理 [复制链接]

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2016-03-21 10:16 |只看该作者 |倒序浏览
文件A:
  1. 上海
  2. 北京
  3. 南京
  4. 西安
  5. 天津
  6. 深圳
复制代码
文件B:
  1. 上海 10
  2. 北京 20
  3. 南京 30
  4. 西安 40
复制代码
文件C:
  1. 北京 33
  2. 南京 21
  3. 西安 44
  4. 天津 11
复制代码
输出:
  1. 上海 10 0
  2. 北京 20 33
  3. 南京 30 21
  4. 西安 40 44
  5. 天津 0  11
  6. 深圳 0  0
复制代码

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
2 [报告]
发表于 2016-03-21 11:39 |只看该作者
  1. awk 'FILENAME=="B"{a[$1]=$2}FILENAME=="C"{b[$1]=$2}FILENAME=="A"{print $0,a[$0]?a[$0]:0,b[$0]?b[$0]:0}' B C A
复制代码
结贴吧

论坛徽章:
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
3 [报告]
发表于 2016-03-21 11:49 |只看该作者
  1. awk 'function check (){for(i in a)if(!b[i])a[i]=a[i] FS 0}ARGIND==1{s[NR]=$1;a[$1];next}ARGIND>2&&FNR==1{check();delete b}{a[$1]=a[$1] FS $2;b[$1]=1}END{check();for(i=1;i<=length(s);++i)print s[i], a[s[i]]}' A B C D E F | column -t
复制代码

论坛徽章:
307
程序设计版块每周发帖之星
日期:2016-04-08 00:41:33操作系统版块每日发帖之星
日期:2015-09-02 06:20:00每日论坛发贴之星
日期:2015-09-02 06:20:00程序设计版块每日发帖之星
日期:2015-09-04 06:20:00每日论坛发贴之星
日期:2015-09-04 06:20:00每周论坛发贴之星
日期:2015-09-06 22:22:00程序设计版块每日发帖之星
日期:2015-09-09 06:20:00程序设计版块每日发帖之星
日期:2015-09-19 06:20:00程序设计版块每日发帖之星
日期:2015-09-20 06:20:00每日论坛发贴之星
日期:2015-09-20 06:20:00程序设计版块每日发帖之星
日期:2015-09-22 06:20:00程序设计版块每日发帖之星
日期:2015-09-24 06:20:00
4 [报告]
发表于 2016-03-21 12:30 |只看该作者
perl abc.pl a.txt b.txt c.txt ...
  1. #!/usr/bin/perl -w
  2. use strict;

  3. my $sA = shift;
  4. open (my $fhA, '<', $sA);
  5. my %hData = my %hCity = map {chomp; $_, ''} <$fhA>;
  6. close ($fhA);
  7. foreach (@ARGV){
  8.         open (my $fh, '<', $_);
  9.         my %h = map {chomp; split} <$fh>;
  10.         close ($fh);
  11.         foreach (keys %hCity){
  12.                 exists $h{$_} ? ($hData{$_} .= " $h{$_}") : ($hData{$_} .= " 0");
  13.         }
  14. }
  15. print ("$_ $hData{$_}\n") foreach (keys %hData);
复制代码

论坛徽章:
6
羊年新春福章
日期:2015-03-03 17:16:28双子座
日期:2015-03-03 17:16:56巳蛇
日期:2015-03-03 17:17:2415-16赛季CBA联赛之福建
日期:2016-03-11 09:05:00黑曼巴
日期:2016-07-07 16:58:1215-16赛季CBA联赛之吉林
日期:2016-11-14 09:23:07
5 [报告]
发表于 2016-03-23 09:14 |只看该作者
awk '{a[$1]=a[$1]" "$2}END{for(i in a)print i,a[i]}' 1 2|awk '{if($2=="")$2=0;print}'|column -t > 12
awk '{a[$1]=a[$1]" "$2}END{for(i in a)print i,a[i]}' 12 3|awk '{if($3=="")$3=0;print}'|column -t

论坛徽章:
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
6 [报告]
发表于 2016-03-23 11:07 |只看该作者
回复 1# TasteOracle
  1. awk 'BEGIN{
  2.         while((getline <"A")>0)
  3.                 cities[$0]="";
  4. }
  5. {
  6.         city_number[$1,FILENAME] = $2
  7.         files[FILENAME]++
  8. }
  9. END{
  10.         for(c in cities){
  11.                 printf("%-10s", c)
  12.                 for(f in files){
  13.                         if((c,f) in city_number)
  14.                                 printf("\t%-03d", city_number[c,f])
  15.                         else
  16.                                 printf("\t%-03d", 0)
  17.                 }
  18.                
  19.                 printf("\n");
  20.         }
  21. }' B C
复制代码

论坛徽章:
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
7 [报告]
发表于 2016-03-23 12:20 |只看该作者
回复 1# TasteOracle
  1. @ubuntu:/home/samba-share/shell$ join --nocheck-order -a 1 -1 1 -2 1 -o 1.1 -o 1.2 -o 2.2 -e "0" <(join --nocheck-order -a 1 -o 1.1  
  2. -o 2.2 -e "0" A B ) C
  3. 上海 10 0
  4. 北京 20 33
  5. 南京 30 21
  6. 西安 40 44
  7. 天津 0 11
  8. 深圳 0 0
复制代码

论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
8 [报告]
发表于 2016-03-23 17:03 |只看该作者
回复 2# TasteOracle

$ awk 'FNR==NR{a[++c]=$1;next}{d[$1,ARGIND]=$2}END{for(n=1;n<=c;n++)print a[n],+d[a[n],2],+d[a[n],3]}' A B C
上海 10 0
北京 20 33
南京 30 21
西安 40 44
天津 0 11
深圳 0 0

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

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP