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列
展开
 我来答
连续用6a43aa2
2018-05-10 · TA获得超过3747个赞
知道大有可为答主
回答量:7283
采纳率:72%
帮助的人:612万
展开全部
#!/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;
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式