perl 如何查找两个文件中有相同字段的行然后按其中一个文件格式输出?
比如说现在有两个文件(都是以制表符分隔):1.txt(有4列)aaa111TTTTT1234bbb111AAAA23452.txt(有10多列)aaa12111TTTTa...
比如说现在有两个文件(都是以制表符分隔):
1.txt(有4列)
aaa 111 TTTTT 1234
bbb 111 AAAA 2345
2.txt(有10多列)
aaa 12 111 TTTT asb ajhs asja 1234
ccc 14 134 AAAA asg jjjs asjk 1278
bbb 21 111 AAAA ash kkka aksk 2345
最后输出结果:
aaa 12 111 TTTT asb ajhs asja 1234
bbb 21 111 AAAA ash kkka aksk 2345
就是说文件1中的1、2、3、4列是对应文件2中的1、3、4、8列 展开
1.txt(有4列)
aaa 111 TTTTT 1234
bbb 111 AAAA 2345
2.txt(有10多列)
aaa 12 111 TTTT asb ajhs asja 1234
ccc 14 134 AAAA asg jjjs asjk 1278
bbb 21 111 AAAA ash kkka aksk 2345
最后输出结果:
aaa 12 111 TTTT asb ajhs asja 1234
bbb 21 111 AAAA ash kkka aksk 2345
就是说文件1中的1、2、3、4列是对应文件2中的1、3、4、8列 展开
1个回答
展开全部
#!/usr/bin/perl
my $a = << 'ATXT';
aaa 111 TTTTT 1234
bbb 111 AAAA 2345
ATXT
my $b = << 'BTXT';
aaa 12 111 TTTTT asb ajhs asja 1234
ccc 14 134 AAAA asg jjjs asjk 1278
bbb 21 111 AAAA ash kkka aksk 2345
BTXT
open CCC,"> d:/c.txt";
my @a = split(/\n/,$a);
my @b = split(/\n/,$b);
foreach $c (@a){
my @e = split(/\s+/,$c);
foreach $d (@b){
if($d =~/$e[0]/ && $d =~/$e[1]/ && $d =~/$e[2]/ && $d =~/$e[3]/){
print CCC "$d\n";
print "$d\n";
}
}
}
close CCC;
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询