怎么用perl把两个列进行相比较并列出不同的?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎么用perl把两个列进行相比较并列出不同的?相关的知识,希望对你有一定的参考价值。

公司硬要我自己写个程序,唉,愁啊。
各位强人帮帮忙:
现在我有一个xls文件,里面有2列,左边列是.xml,右边列是.html(通常html比xml多)。因为不能上传图,只能自己打了,如下:
0002.xml 0002.html
0004.xml 0004.html
0020.xml 0020.html
0022.xml 0022.html
0031.xml 0031.html
0043.xml 0043.html
0049.xml 0049.html
0073.xml 0064.html
0074.xml 0073.html
0082.xml 0074.html
0088.xml 0082.html
。。。。
每列差不多有1000来行,现在我要写一个perl程序来比较这两列,比如从倒数第四列可以看出左列没有0064.xml,所以要再从新的一列列出来这个"0064.xml"。

没别的要求,就是这样而已,有人可以给我一个完整的程序让我学习学习吗!跪求~

没必要用perl,excel就可以了,把其中一列贴到记事本,然后贴回excel里面(记住,贴回去的时候要把所有内容贴到一个单元格里面),然后用find函数就可以找到不同的了。

比如说你给出来的是列A和列B。
1.把列A的东西复制到记事本,然后全部贴到C1里面。
2.在D1写公式 "=find(left(B1,4),C$1)", 把这个公式贴到整个B列里面
3.D1的运算结果就表示B1的内容能不能在A列里面找到,D2的运算结果就表示B2的内容能不能在A列里面找到,以此类推
4.直接用菜单里的"数据"->"筛选"->"自动筛选" 选出你要的那些行就行了。
参考技术A 这个不单单是比较右边的和左边的不同之处,而是比较右侧的在左侧没有的项,一楼的做法很明显0082.xml又会多列出一边。
具体可以把左列数字部分存到一个数组a,右列数字部分存到另一个数组b,来遍历b,比较b的每个值在a中是否存在,不存在的打印出来。
我这里给出比较两列数据的函数如下:
用法:compare_arr_different(\@a,\@b)
#compare_arr_different function
sub compare_arr_different()
my ( $arr_o,$arr_n )=@_;
my %seen=();
foreach(@$arr_o)
$seen$_=1;

return grep(!$seen$_,@$arr_n);
本回答被提问者采纳
参考技术B #! /usr/bin/perl

open(IN, "keekee.txt");
while(<IN>)
($a,$b) = split /\s+/, $_;
print $a, "\t", $b, "\n";
print substr($a,0,4). "\t";
print substr($b,0,4). "\n";
if ( (substr($a,0,4)) ne (substr($b,0,4)) )
print $b . " is not on the left.\n";


close IN;

以上是关于怎么用perl把两个列进行相比较并列出不同的?的主要内容,如果未能解决你的问题,请参考以下文章

Linux下Diff命令

怎样用Beyond Compare比较两个excel表格文件差异

怎样用Beyond Compare比较两个word文档的差异

linux下比较两个文本文件的不同——diff命令

如何基于相同的 ID 比较两个不同数据框中的日期列

谁能推荐一个sqlserver数据库比较工具