分页: 1 / 1

在多个文件中进行查找匹配的问题

发表于 : 2008-12-31 16:49
frogfrogfrog
文件A中为:

代码: 全选

bob 1234
frank 56798
yui 345678
也就是‘名字+空格+电话’的组合

文件B中为:

代码: 全选

1234
MATH
56798
ENGLISH
345678
FRENCH
也就是‘电话’换行‘科目’的组合,其中‘电话’和文件A中的顺序不是对应的;还可以有电话后面没有科目的情况,也就是

代码: 全选

电话1
电话2
科目
现要合成一文件得到名字 + 空格 + 电话 + 科目的组合,我的想法是在B中取到电话,然后在电话接下来的一行中取到科目,然后在A中查找 电话与B中的对应,再把科目加在后面。但是不知道怎么换行,也就是查找到电话之后就查找接下来的一行中的科目,如果没有就是空。

请教论坛高手或者给个实例。谢谢。

Re: 在多个文件中进行查找匹配的问题

发表于 : 2008-12-31 21:39
HuntXu
初学perl,抛砖引玉了...
太特殊的情况就没考虑...

代码: 全选

#!/usr/bin/perl -w
use strict;

my $num;
my %numname;
open (FILE1, $ARGV[0]);
while (<FILE1>) {
    chomp;
    /(\w+)\s(\d+)/;
    $numname{$2} = $1;
}
open (FILE2, $ARGV[1]);
while (<FILE2>) {
    chomp;
    if (/\d+/) {
    $num = $_;
    }
    elsif (exists $numname{$num}) {
	print $numname{$num}." ".$num." ".$_."\n";
    }
}

Re: 在多个文件中进行查找匹配的问题

发表于 : 2009-01-01 13:07
ztf
用paste 命令即可