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

  免費注冊 查看新帖 |

Chinaunix

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

如何得到兩個文件中不同的部分 [復制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2012-06-26 21:55 |只看該作者 |倒序瀏覽
我有兩個文件,A與B,其中的大部分數(shù)據(jù)時相同的,我想找出兩個文件中不同的部分:只有A中有的,只有B中有的。
例如:
A.txt
11-11
22-22
33-33
12-34
44-44

B.txt
11-11
22-22
43-21
56-78
33-33
44-44

得到結(jié)果:
A:12-34
B: 43-21
    56-78

結(jié)果分別輸出到兩個文件中也行,單獨在一個文件中也可。
請教。

論壇徽章:
2
CU大;照
日期:2013-04-17 11:46:28CU大;照
日期:2013-04-17 11:46:39
2 [報告]
發(fā)表于 2012-06-26 22:08 |只看該作者
  1. zhu@ubuntu:~/shell$ diff -y a.txt b.txt
  2. 11-11                                                                11-11
  3. 22-22                                                                22-22
  4.                                                               >        43-21
  5.                                                               >        56-78
  6. 33-33                                                                33-33
  7. 12-34                                                              <
  8. 44-44                                                                44-44
復制代碼

論壇徽章:
2
CU大;照
日期:2013-04-17 11:46:28CU大;照
日期:2013-04-17 11:46:39
3 [報告]
發(fā)表于 2012-06-27 16:16 |只看該作者
  1. zhu@ubuntu:~/perl$ ./diff.pl a.txt b.txt
  2. a.txt:
  3. 12-34
  4. b.txt:
  5. 43-21
  6. 56-78
  7. zhu@ubuntu:~/perl$ cat diff.pl
  8. #!/usr/bin/env perl

  9. use strict;
  10. use warnings;

  11. sub do_diff {
  12.     my ($fa, $fb) = @_;
  13.     undef $/;
  14.     my $text = $fa . ":\n";
  15.     open my $fh, '<', $fa or die $!;
  16.     $text .= <$fh>;
  17.     close $fh or die $!;
  18.     $text .= $fb . ":\n";
  19.     open $fh, '<', $fb or die $!;
  20.     $text .= <$fh>;
  21.     close $fh or die $!;

  22.     while ($text =~ s/(^.*?$)\n(.*)(\1)\n/$2/mgs) {};

  23.     return $text;
  24. }

  25. my $fa = $ARGV[0] || 'a.txt';
  26. my $fb = $ARGV[1] || 'b.txt';
  27. my $text = do_diff($fa, $fb);
  28. print $text;
  29. zhu@ubuntu:~/perl$ cat a.txt
  30. 11-11
  31. 22-22
  32. 33-33
  33. 12-34
  34. 44-44
  35. zhu@ubuntu:~/perl$ cat b.txt
  36. 11-11
  37. 22-22
  38. 43-21
  39. 56-78
  40. 33-33
  41. 44-44
  42. zhu@ubuntu:~/perl$
復制代碼

論壇徽章:
0
4 [報告]
發(fā)表于 2012-06-27 17:18 |只看該作者
#!D:\strawberry\perl\bin\perl5.12.3 -w

use strict;
use warnings;

my $filename1="d:/cc/a.txt";
my $filename2="d:/cc/b.txt";

open FILE,$filename1 or die "Can’t open '$filename1': $!";
my @LINE1=<FILE>;
close FILE;

open FILE,$filename2 or die "Can’t open '$filename2': $!";
my @LINE2=<FILE>;
close FILE;

my @LINE3;
my @LINE4;
my $sum1=0;
my $sum2=0;

while(my $a=<@LINE1>)
{
        while(my $b=<@LINE2>)
        {
                if($a eq $b)
                {
      $sum1+=1;
                }
               
        }
        if($sum1 == 0)
        {
                push @LINE3,$a;
        }
        $sum1=0;
}
while(my $a=<@LINE2>)
{
        while(my $b=<@LINE1>)
        {
                if($a eq $b)
                {
      $sum2+=1;
                }
               
        }
        if($sum2 == 0)
        {
                push @LINE4,$a;
        }
                $sum2=0;
}

while(<@LINE3>)
{
        print "A:",$_,"\n";
}
while(<@LINE4>)
{
        print "B:",$_,"\n";
}

論壇徽章:
0
5 [報告]
發(fā)表于 2012-06-27 17:47 |只看該作者
還是覺得diff 命令好使

論壇徽章:
0
6 [報告]
發(fā)表于 2012-06-28 00:45 |只看該作者
  1. #!perl -w
  2. use strict;
  3. # AUTHOR: niejieqiang
  4. use Text::Diff;

  5. open my $fh, ">", "diff_file.txt";
  6. my $diff = diff "file1.txt", "file2.txt", {
  7.     STYLE  => "Context",
  8.     OUTPUT => \*$fh,
  9. };
  10. close $fh;
復制代碼

論壇徽章:
7
戌狗
日期:2013-12-15 20:43:38技術圖書徽章
日期:2014-03-05 01:33:12技術圖書徽章
日期:2014-03-15 20:31:17未羊
日期:2014-03-25 23:48:20丑牛
日期:2014-04-07 22:37:44巳蛇
日期:2014-04-11 21:58:0915-16賽季CBA聯(lián)賽之青島
日期:2016-03-17 20:36:13
7 [報告]
發(fā)表于 2012-06-28 01:58 |只看該作者
例如:
  1. #!/usr/bin/perl

  2. my ( $i, $j ) = map { open my ($f), $_; $f } 'A.txt', 'B.txt';
  3. my %a = map { $_, 1 } <$i>;
  4. my %b = map { $_, 1 } <$j>;
  5. print "A:\n", grep { !$b{$_} } keys %a;
  6. print "B:\n", grep { !$a{$_} } keys %b;
復制代碼

論壇徽章:
0
8 [報告]
發(fā)表于 2012-06-28 03:16 |只看該作者
comm 命令更好

A中有
  1. comm -23 A B
復制代碼
B 中有
  1. comm -13 A B
復制代碼
A, B 共有
  1. comm -12 A B
復制代碼

論壇徽章:
1
2015年辭舊歲徽章
日期:2015-03-03 16:54:15
9 [報告]
發(fā)表于 2015-12-25 19:55 |只看該作者
本帖最后由 hkldd 于 2015-12-25 19:56 編輯

rubyish大俠;能否把你下面這段代碼修改成;把兩個文件中的不同部分分別保存在兩個文件中。謝謝!
  1. #!/usr/bin/perl

  2. my ( $i, $j ) = map { open my ($f), $_; $f } 'A.txt', 'B.txt';
  3. my %a = map { $_, 1 } <$i>;
  4. my %b = map { $_, 1 } <$j>;
  5. print "A:\n", grep { !$b{$_} } keys %a;
  6. print "B:\n", grep { !$a{$_} } keys %b;
復制代碼
您需要登錄后才可以回帖 登錄 | 注冊

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

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP