亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 3125 | 回復(fù): 6
打印 上一主題 下一主題

求助,怎樣多個(gè)文件對比合并出結(jié)果? [復(fù)制鏈接]

論壇徽章:
1
金牛座
日期:2014-03-21 18:22:34
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2016-08-18 14:46 |只看該作者 |倒序?yàn)g覽
30可用積分
本帖最后由 lockeyou 于 2016-08-18 14:47 編輯

txt1
13288888888,1
13288888889,7

txt2
13288888888,200
13288888890,5000

txt3
xa,1,張三,男,13288888888,0,0,0,0,,,,
sh,2,李四,男,13288888889,0,0,0,0,,,,
sh,3,王五,女,13288888890,0,0,0,0,,,,
bj,4,毛六,男,13288888891,0,0,0,0,,,,

txt4
xa,1,張三,男,13288888888,1,0,200,0,,,,
sh,2,李四,男,13288888889,7,0,0,0,,,,
sh,3,王五,女,13288888890,0,0,5000,0,,,,
bj,4,毛六,男,13288888891,0,0,0,0,,,,

PS:txt4就是想要的答案
另想請教一下大牛在linux環(huán)境下對excel某幾個(gè)單元格修改有沒有方法,tks
原因,原本是根據(jù)sql求出值寫到excel里,但是excel修改單元格貌似只有在win下才可以用,后決定先把結(jié)果寫到txt里面進(jìn)行操作,操作完成后再創(chuàng)建對應(yīng)excel進(jìn)行展示。

最佳答案

論壇徽章:
6
丑牛
日期:2014-03-21 15:42:04子鼠
日期:2014-04-12 11:50:17處女座
日期:2014-09-01 09:25:1115-16賽季CBA聯(lián)賽之吉林
日期:2015-12-22 14:01:5215-16賽季CBA聯(lián)賽之廣東
日期:2016-03-08 18:49:422016科比退役紀(jì)念章
日期:2016-07-06 12:19:55
2 [報(bào)告]
發(fā)表于 2016-08-18 14:46 |只看該作者
這樣?
  1. #!perl
  2. use strict;

  3. open my $fh1, '<', 'txt1';
  4. my $data_href = +{};
  5. while (defined (my $line = readline $fh1)) {
  6.     chomp $line;
  7.     my ($phone_number, $times) = split /,/, $line;
  8.     $data_href->{$phone_number}->{'times'} = $times;
  9. }
  10. close $fh1;

  11. open my $fh2, '<', 'txt2';
  12. while (defined (my $line = readline $fh2)) {
  13.     chomp $line;
  14.     my ($phone_number, $score) = split /,/, $line;
  15.     $data_href->{$phone_number}->{'score'} = $score;
  16. }
  17. close $fh2;

  18. open my $fh3, '<', 'txt3';
  19. open my $fh4, '>', 'txt4';
  20. while (defined (my $line = readline $fh3)) {
  21.     chomp $line;
  22.     my @parts = split /,/, $line, 13;
  23.     my $phone_number = $parts[4];

  24.     $parts[5] = $data_href->{$phone_number}->{'times'} || 0;
  25.     $parts[7] = $data_href->{$phone_number}->{'score'} || 0;

  26.     my $new_line = join ',', @parts;
  27.     print {$fh4} "$new_line$/";
  28. }
  29. close $fh3;
  30. close $fh4;


  31. __END__
復(fù)制代碼

論壇徽章:
307
程序設(shè)計(jì)版塊每周發(fā)帖之星
日期:2016-04-08 00:41:33操作系統(tǒng)版塊每日發(fā)帖之星
日期:2015-09-02 06:20:00每日論壇發(fā)貼之星
日期:2015-09-02 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-04 06:20:00每日論壇發(fā)貼之星
日期:2015-09-04 06:20:00每周論壇發(fā)貼之星
日期:2015-09-06 22:22:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-09 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-19 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-20 06:20:00每日論壇發(fā)貼之星
日期:2015-09-20 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-22 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-24 06:20:00
3 [報(bào)告]
發(fā)表于 2016-08-18 20:01 |只看該作者
  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;

  4. my ($first, %hData) = "";
  5. while (<>){
  6.     chomp;
  7.     my @aList = split (/,/, $_, -1);
  8.     if (@ARGV){
  9.         $first = $ARGV if ($first eq "");
  10.         my @aT = ($aList[-1], 0);
  11.         if ($first eq $ARGV){
  12.             push (@{$hData{$aList[0]}}, @aT);
  13.         }else{
  14.             my $has = exists $hData{$aList[0]};
  15.             push (@{$hData{$aList[0]}}, $has ? @aT : (0, 0, @aT));
  16.         }
  17.         next;
  18.     }
  19.     if (exists $hData{$aList[4]}){
  20.         my @aT = @{$hData{$aList[4]}};
  21.         @aList[5 .. 8] = @aT > 2 ? @aT : (@aT, 0, 0);
  22.     }
  23.     print join (",", @aList), "\n";
  24. }
復(fù)制代碼
perl abc.pl a b c
-------------------------------------------------------------------
xa,1,張三,男,13288888888,1,0,200,0,,,,
sh,2,李四,男,13288888889,7,0,0,0,,,,
sh,3,王五,女,13288888890,0,0,5000,0,,,,
bj,4,毛六,男,13288888891,0,0,0,0,,,,

論壇徽章:
307
程序設(shè)計(jì)版塊每周發(fā)帖之星
日期:2016-04-08 00:41:33操作系統(tǒng)版塊每日發(fā)帖之星
日期:2015-09-02 06:20:00每日論壇發(fā)貼之星
日期:2015-09-02 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-04 06:20:00每日論壇發(fā)貼之星
日期:2015-09-04 06:20:00每周論壇發(fā)貼之星
日期:2015-09-06 22:22:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-09 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-19 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-20 06:20:00每日論壇發(fā)貼之星
日期:2015-09-20 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-22 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-24 06:20:00
4 [報(bào)告]
發(fā)表于 2016-08-18 20:23 |只看該作者
如果不是以編程的方式修改 MS Excel 單元格內(nèi)容的話, 可以使用 LibreOffice 辦公套件. 開源, 跨平臺.

論壇徽章:
95
程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-05 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-17 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-18 06:20:002015亞冠之阿爾艾因
日期:2015-09-18 10:35:08月度論壇發(fā)貼之星
日期:2015-09-30 22:25:002015亞冠之阿爾沙巴布
日期:2015-10-03 08:57:39程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-10-05 06:20:00每日論壇發(fā)貼之星
日期:2015-10-05 06:20:002015年亞冠紀(jì)念徽章
日期:2015-10-06 10:06:482015亞冠之塔什干棉農(nóng)
日期:2015-10-19 19:43:35程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-10-21 06:20:00每日論壇發(fā)貼之星
日期:2015-09-14 06:20:00
5 [報(bào)告]
發(fā)表于 2016-08-18 23:42 |只看該作者

  1. #!/usr/bin/perl

  2. use strict;
  3. use warnings;

  4. use v5.16;
  5. use autodie;
  6. use Data::Dumper;

  7. sub load_data1 {
  8.   local @ARGV = @_;

  9.   my %records;
  10.   while (<>) {
  11.     chomp;
  12.     my ($k, $v) = split /\s*,\s*/;
  13.     $records{$k} = $v;
  14.   }

  15.   return wantarray ? %records : \%records;
  16. }

  17. sub load_data2 {
  18.   local @ARGV = @_;

  19.   my @records;
  20.   while (<>) {
  21.     chomp;
  22.     push @records, [split /\s*,\s*/, $_, -1];
  23.   }

  24.   return wantarray ? @records : \@records;
  25. }

  26. ###

  27. die "Usage: $0 txt1 txt2 txt3" unless @ARGV >= 3;

  28. my $records1 = load_data1 $ARGV[0];
  29. my $records2 = load_data1 $ARGV[1];
  30. my $records3 = load_data2 $ARGV[2];

  31. foreach (@$records3) {
  32.   my $id = $_->[4];
  33.   $_->[5] = $records1->{$id} if exists $records1->{$id};
  34.   $_->[7] = $records2->{$id} if exists $records2->{$id};

  35.   say join(',', @$_);
  36. }
復(fù)制代碼

論壇徽章:
1
金牛座
日期:2014-03-21 18:22:34
6 [報(bào)告]
發(fā)表于 2016-08-22 08:45 |只看該作者
謝謝樓上各位大神的解決方案,好久沒寫代碼,都忘了sub了,哈哈
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP