请教perl编程问题,只能用perl,其他方法或建议请绕道,O(∩_∩)O谢谢!

我有两个文件A和B,每个文件有对应的四列,现在我想以第一列(名称),将A和B两个文件里每行一一对应,能对应的保留在原文件中,不能对应的删除,用perl编写一个这样的程序,... 我有两个文件A和B,每个文件有对应的四列,现在我想以第一列(名称),将A和B两个文件里每行一一对应,能对应的保留在原文件中,不能对应的删除,用perl编写一个这样的程序,有没有大侠帮忙写个perl程序,谢谢! 展开
 我来答
百度网友5d7ad46
2012-08-27 · 超过19用户采纳过TA的回答
知道答主
回答量:47
采纳率:0%
帮助的人:26.8万
展开全部
不知道你文件的具体格式,还有第一列否完全相同才保留,写个,在上面适当修改就是了
一般不在原文件上修改,如果程序有BUG,那原文件数据就没了,所以相同的输出到另外两个文件AA,BB
open A,"<A" || die"cannot open A:$!";
open B,"<B" || die"cannot open B:$!";
open AA,">AA" || die"cannot open AA:$!";
open BB,">BB" || die"cannot open BB:$!";
my %A;
while(<A>"{
my @a=split;#希望你第一列数据里没有空格,有就要另想办法了
$A{$a[0]}=$_;用第一列做键 一行做值生成哈希

while(<B>){
my @b=split;同A
if($A{$b[0]}){ #如果名称对应,下面分别输出到AA,BB文件中
print AA $A{$b[0]};
print BB $_;
}
}
思路是这样,希望对你有用,如果第一列不是相同的,不明白怎么用,可以找我
匿名用户
2012-08-29
展开全部
#!/bin/perl
my %clomn1;my %clomn2;my @file1;my @file2;
open IN,$ARGV[0];
while(<IN>){
$clomn1{ (split)[0]}=1;
push @file1;
}
close IN;
while(<IN>){
$clomn2{ (split)[0]}=1 if exists $clomn1{ (split)[0]}=1;
push @file2;
}
close IN;
open OUT,">$ARGV[0]";
foreach (@file1){
print OUT if exists $clomn2{ (split)[0]};
}
close OUT;
open OUT,">$ARGV[1]";
foreach (@file2){
print OUT if exists $clomn2{ (split)[0]};
}
close OUT;
#随手写的,运行前请备份文件!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ba_du_co
2012-08-31 · TA获得超过937个赞
知道小有建树答主
回答量:191
采纳率:0%
帮助的人:274万
展开全部
perl程序:编写一个这样的程序
#!/usr/bin/perl
open my $a, 'a.txt';
open my $b, 'b.txt';
(split)[0] eq (split /\s+/, <$b>)[0] ? print :undef while <$a>;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式