[求助]有关两个csv文件的比较
时间:2010-09-20
来源:互联网
- #!/usr/bin/perl
- use Text::CSV_XS;
- my $csvfile="file1.csv";
- my $newfile="file2.csv";
- open $old, "<", $csvfile;
- open $new, "<", $newfile;
- open DIFF, ">", "diff.txt";
- my $csvold = Text::CSV_XS->new ({ binary => 1, eol => $/ });
- my $csvnew = Text::CSV_XS->new ({ binary => 1, eol => $/ });
- my $count=0;
- while(my $rowold=$csvold->getline($old))
- {
- my @item1 = @$rowold;
- my @item2;
- my @tt;
- my $line2;
- my @t = @item1;
- my $line = shift @item1;
- $line = shift @item1;
- # print DIFF "$line\t";
- while(my $rownew=$csvnew->getline($new))
- {
- @item2 = @$rownew;
- @tt = @item2;
- $line2 = shift @item2;
- $line2 = shift @item2;
- # print DIFF "$line2\n";
- if($line == $line2)
- {
-
- $count=$count + 1;
- @t="";
- $line="";
- last;
- }
- }
- if($line =~ /^\w+/)
- {
- print DIFF "@t\n";
- }
-
- }
我是根据CSV文件中的第二列数据进行比较 把FILE1中有的,而FILE2中没有的行提取出来,但是始终不能做到 有没有高人帮我解答下啊?谢谢啦

file1andfile2.rar (13.75 KB)
作者: scrit 发布时间: 2010-09-20
看下这都写重复了,还反复的从一个数组到另一个数组,看不明白啥意图~
@tt = @item2;
$line2 = shift @item2;
$line2 = shift @item2;
作者: x9x9 发布时间: 2010-09-20
perl -F',' -ane 'if ($ARGV eq "file2.csv"){$file{$F[1]}="";next}print if not exists $file{$F[1]}' file2.csv file1.csv
作者: 99超人 发布时间: 2010-09-20
这是因为我需要根据csv中的第二列数据来匹配的 所以执行了两次
作者: scrit 发布时间: 2010-09-20
两个文件中的 其他列的数据会有不同的 ,如果直接按行匹配是不行的, 第一列是所引字段,第二列才是比较字段的
作者: scrit 发布时间: 2010-09-20
作者: iamlimeng 发布时间: 2010-09-20

作者: scrit 发布时间: 2010-09-20
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28