免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123
最近访问板块 发新帖
楼主: bmechuangye
打印 上一主题 下一主题

【求助】程序调用shell命令问题 [复制链接]

论坛徽章:
0
21 [报告]
发表于 2009-09-17 13:28 |只看该作者
算了
自己看出来了 是和~
竟然问这么白痴的问题
当然也看到了
是个数字这样的回答

[ 本帖最后由 nuclearxin 于 2009-9-17 13:34 编辑 ]

论坛徽章:
0
22 [报告]
发表于 2009-09-17 13:38 |只看该作者
怎么搞的这么复杂啊?

论坛徽章:
0
23 [报告]
发表于 2009-09-17 13:46 |只看该作者

回复 #22 dahe_1984 的帖子

确实是啊  一句命令行的问题  弄得这么复杂 偶滴神啊

论坛徽章:
0
24 [报告]
发表于 2009-09-17 13:55 |只看该作者
Before
real    0m1.344s
user    0m1.752s
sys     0m0.953s

Now:

real    0m0.188s
user    0m0.124s
sys     0m0.061s

#!/usr/bin/perl -w
use strict;
my $fileone=$ARGV[0];
my $filetwo=$ARGV[1];
print $fileone;
my (@id,@res,@contents);
my $result;
open (FH,$fileone);
while(<FH>){
    chomp;
push (@id,$_);
#print "$_\t$result\n";
}
close FH;

open (FH,$filetwo);
@contents = <FH>;
close FH;

foreach my $name(@id){
print $name;
#@res = `grep -c $name $filetwo`;         # system是shell返回值,不是返回结果。最好是把文件保存到内存,然后用perl中的grep 去查询,用shell好像慢了点
my $count = grep /$name/, @contents;
print "\n$count\n";
}

论坛徽章:
0
25 [报告]
发表于 2009-09-17 14:00 |只看该作者
把数组一次性放进内存,然后在内存中查肯定比每次调用shell命令从磁盘中查询快一些。

论坛徽章:
0
26 [报告]
发表于 2009-09-18 21:48 |只看该作者
谢谢各位,向高手学习了!

原帖由 nuclearxin 于 2009-9-17 13:08 发表
一句awk就搞定~
看来不够复杂


我原想用awk来解决,试了试没成。请问你是怎么一句就搞定的?

论坛徽章:
0
27 [报告]
发表于 2009-09-21 10:15 |只看该作者

回复 #26 bmechuangye 的帖子

我没用AWK,但你可以参考下:
for job in `tr -d "\015" <S2.txt` ;do grep -i $job S1.txt ;done

论坛徽章:
0
28 [报告]
发表于 2009-09-24 10:28 |只看该作者
原帖由 toniz 于 2009-9-21 10:15 发表
我没用AWK,但你可以参考下:
for job in `tr -d "\015"  

谢谢!不太明白意思,说明我还很菜!要是有人能解读这段shell的意思就好了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP