免费注册 查看新帖 |

Chinaunix

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

[文本处理] 请教如何对比两组数据所在的行数。 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2017-06-07 12:06 |只看该作者 |倒序浏览
例:   
文本一内容:
1   A
2   B
3   C
4   D
5   E
文本二内容:
1   D
2   B
3   C
4   E
5   A

已第一个文本排序数组为基准,通过shell指令或脚本得到以下结果:
1  5  A
2  2  B
3  3  C
4  1  D
5  4  E


给小白点思路 先谢过各位大神了!



论坛徽章:
0
2 [报告]
发表于 2017-06-07 12:52 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
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
3 [报告]
发表于 2017-06-07 13:02 |只看该作者
  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;

  4. sub Load{
  5.         my %hData = ();
  6.         local @ARGV = pop;
  7.         while(<>){
  8.                 my ($v, $k) = split;
  9.                 $hData{$k} = $v;
  10.         }
  11.         \%hData;
  12. }

  13. my $rhKeys = Load(pop);
  14. while(<>){
  15.         my ($v, $k) = split;
  16.         my $out = "$v\t";
  17.         $out .= "$rhKeys->{$k}\t" if(exists $rhKeys->{$k});
  18.         print($out, $k, "\n");
  19. }
复制代码

论坛徽章:
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
4 [报告]
发表于 2017-06-07 14:29 |只看该作者
回复 1# wyq199161

$ awk 'FNR==NR{a[$2]=$1;next}{print $1,a[$2],$2}' F2 F1
1 5 A
2 2 B
3 3 C
4 1 D
5 4 E

论坛徽章:
0
5 [报告]
发表于 2017-06-07 14:32 |只看该作者

,

本帖最后由 wyq199161 于 2017-06-07 14:35 编辑

回复 3# sunzhiguolu

谢大神 ,得到了想要的结果!不过没学过perl 语言

论坛徽章:
0
6 [报告]
发表于 2017-06-07 14:39 |只看该作者
回复 4# jason680

谢大神,AWK我喜欢 shell脚本三剑客之一

论坛徽章:
10
15-16赛季CBA联赛之同曦
日期:2016-06-11 19:22:4115-16赛季CBA联赛之深圳
日期:2020-05-31 16:13:5615-16赛季CBA联赛之同曦
日期:2020-01-28 12:42:47每日论坛发贴之星
日期:2016-08-09 06:20:00程序设计版块每日发帖之星
日期:2016-08-09 06:20:00每日论坛发贴之星
日期:2016-07-12 06:20:00程序设计版块每日发帖之星
日期:2016-07-12 06:20:00程序设计版块每日发帖之星
日期:2016-07-06 06:20:00程序设计版块每日发帖之星
日期:2016-07-04 06:20:0015-16赛季CBA联赛之佛山
日期:2021-02-26 09:33:41
7 [报告]
发表于 2017-06-15 22:26 |只看该作者
root@lp:~/lp# awk 'NR==FNR{a[$2]=$1}NR!=FNR{print $1,a[$2],$2}' file2 file1
1 5 A
2 2 B
3 3 C
4 1 D
5 4 E

论坛徽章:
0
8 [报告]
发表于 2017-06-19 17:15 |只看该作者
  1. [root@localhost ~]# cat file1
  2. 1   A
  3. 2   B
  4. 3   C
  5. 4   D
  6. 5   E
  7. [root@localhost ~]# cat file2
  8. 1   D
  9. 2   B
  10. 3   C
  11. 4   E
  12. 5   A
  13. [root@localhost ~]# awk 'NR==FNR{a[$2]=$0;next}{print $1,a[$2]}' file2 file1
  14. 1 5   A
  15. 2 2   B
  16. 3 3   C
  17. 4 1   D
  18. 5 4   E
复制代码


思路跟四楼差不多
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP