用perl 提取根据第一列名字提取第二列的数据,求可实现的程序

从文件:aalsaabdfjdcedish4dhe中根据第一列名字提取行如我要提取aace则输出(要提取的名字也在一个文件中)aalsacedish... 从文件:
aa lsa
ab dfjd
ce dish
4d he 中根据第一列名字提取行
如我要提取aa ce 则输出(要提取的名字也在一个文件中)
aa lsa
ce dish
展开
 我来答
0o木目心o0
2012-05-24 · 超过12用户采纳过TA的回答
知道答主
回答量:50
采纳率:0%
帮助的人:35.7万
展开全部
简单,用哈希就行了
open(IN,$file);
while(<IN>){
chomp;
my $name=(split /\s+/,$_)[0];
$hash{$name}=$_;
}
close IN;
#####
假如你要某一行的内容,就print $hash{$name};###$name是某一列的名字
追问
我是有两个文件,一个是file1,存储:
aa lsa
ab dfjd
ce dish
一个file2,存储:
aa
ce
我具体应该怎么操作?
追答
open(FILE1,$file1);
while(){
chomp;
my $name=(split /\s+/,$_)[0];
$hash{$name}=$_;
}
close FILE1;
open(FILE2,$file2);
while(){
chomp;
print $hash{$_};
}
close FILE2;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
maosong327
2012-05-24 · 超过52用户采纳过TA的回答
知道小有建树答主
回答量:118
采纳率:100%
帮助的人:104万
展开全部
open(IN,"file1");
open(NAME,"file2");
open(OUT,">result");
while(<IN>){
chomp;
@data=split / /,$_;
$hash{$data[0]}=$data[1];
}
while(<NAME>){
chomp;
print OUT "$_ $hash{$_}\n";
}
close IN;
close NAME;
close OUT;
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
86...0@qq.com
2012-05-24
知道答主
回答量:7
采纳率:0%
帮助的人:1.1万
展开全部
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
方烨熠6
2012-05-26
知道答主
回答量:28
采纳率:0%
帮助的人:22.2万
展开全部
用hash表就行。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式