免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 1992 | 回复: 12
打印 上一主题 下一主题

文本处理SOS!!!! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-06-23 11:47 |只看该作者 |倒序浏览
我的文本内如下(是若干程序的运行结果):
-------------------- CAL_ADD0001.out ---------------------
+000000000000000000
結果は (+000000000000000000)でしたか?
CAL_ADD0001
-------------------- CAL_ADD0002.out ---------------------
+100000000000000000
結果は (+200000000000000000)でしたか?
CAL_ADD0002
-------------------- CAL_ADD0003.out ---------------------
800000000000000000
結果は (800000000000000000)でしたか?
CAL_ADD0003
对于每一个程序的运行结果,我要做一个比较,把程序运行输出的第二行(比如第一个程序输出下面的红色部分)和第三行()中的内容进行比较,如果一致则在此行的末尾追加'-------------->OK',否则追加'-------------->NG'
比如对于第一个程序的输出结果的处理后应该为:

-------------------- CAL_ADD0001.out ---------------------
+000000000000000000
結果は (+000000000000000000)でしたか?--------------->OK
CAL_ADD0001
第二个程序的输出结果应该为:
-------------------- CAL_ADD0002.out ---------------------
+100000000000000000
結果は (+200000000000000000)でしたか?--------------->NG

然后统计OK,NG的个数各是多少!
谢谢了!!
  

论坛徽章:
0
2 [报告]
发表于 2003-06-23 12:59 |只看该作者

文本处理SOS!!!!

你用中文写大概会有人回答

论坛徽章:
0
3 [报告]
发表于 2003-06-23 13:07 |只看该作者

文本处理SOS!!!!

大哥!这些日文不会影响吧?有用的只是()里面的东西,如果你不喜欢,把它当成
XXX..XX不就行了吗?谢谢!!我也不想写日文,我只是把要处理的文本写出来!

论坛徽章:
0
4 [报告]
发表于 2003-06-23 13:34 |只看该作者

文本处理SOS!!!!

将()中间的东东取出来
sed 's/[^(]*(\([^)]*\)).*/\1/'

论坛徽章:
0
5 [报告]
发表于 2003-06-23 13:40 |只看该作者

文本处理SOS!!!!

#! /bin/perl
sub deal_special
{
$temStr=$_[0];
        $temStr =~ s/\\/\\\\/g ;
        $temStr =~ s/\(/\\\(/g ;
        $temStr =~ s/\)/\\\)/g ;
        $temStr =~ s/\|/\\\|/g ;
        $temStr =~ s/\[/\\\[/g ;
        $temStr =~ s/\{/\\\{/g ;
        $temStr =~ s/\^/\\\^/g ;
        $temStr =~ s/\$/\\\$/g ;
        $temStr =~ s/\*/\\\*/g ;
        $temStr =~ s/\+/\\\+/g ;
        $temStr =~ s/\?/\\\?/g ;
        $temStr =~ s/\./\\\./g ;
        return $temStr ;       
}
$temStr1="--------------->OK";
$temStr2="--------------->NG";
$str2="";
$str3="";
$str4="";
$str2T="";
$str3T="";
open(INPUT,"input.txt"||die("can't open the file INPUT";
open(OUTPUT,">output.txt"||die("can't open the file OUTPUT";
while($outData=<INPUT>{
        print OUTPUT $outData;
        $str2=readline(*INPUT);
        $str3=readline(*INPUT);
        $str4=readline(*INPUT);
        chomp($str2);chomp($str3);chomp($str4);
        $str2T=deal_special($str2);
        $str3T=deal_special($str3);
        if($str3T =~ /$str2T/){
            $str3=$str3.$temStr1;                  
        }else{
           $str3=$str3.$temStr2;
        }
        print OUTPUT $str2."\n";
        print OUTPUT $str3."\n";
        print OUTPUT $str4."\n";
}       
close(OUTPUT)||die("can't close the file OUTPUT";
close(INPUT)||die("can't close the file INPUT";
哈哈,俺用SHELL写不了了,所以就那PERL写了一下,看看行不?至于统计OK和NG的个数,今天早上红袖的贴里有,你可以看看,很简单的~

论坛徽章:
0
6 [报告]
发表于 2003-06-23 13:44 |只看该作者

文本处理SOS!!!!

谢谢,nkliyong
[img]将()中间的东东取出来
sed 's/[^(]*(\([^)]*\)).*/\1/' [img]
问题变为:
对于每一个程序的运行结果,我要做一个比较,把程序运行输出的第二行(比如第一个程序输出下面的红色部分)和第三行的内容进行比较,如果一致则在此行的末尾追加'-------------->OK',否则追加'-------------->NG'
如何比较这两行呢?如何统计OK,NG的个数呢?谢谢!!!

论坛徽章:
0
7 [报告]
发表于 2003-06-23 13:54 |只看该作者

文本处理SOS!!!!

谢谢,anonimousboy!敬礼!
挺喜欢你的INPUT,OUTPUT.
不过小弟不懂perl,能不能使用sed, awk,grep呢?
谢谢!!![/flash][/url][/code][/quote]

论坛徽章:
0
8 [报告]
发表于 2003-06-23 14:11 |只看该作者

文本处理SOS!!!!

[quote]原帖由 "peterbingxu"][/quote 发表:
     
我口吐2两鲜血而死~~呵呵,其实感觉PERL也是一种SHELL,只不过它里边不直接支持UNIX命令罢了,不过也可以用SYSTEM来调用UNIX的命令~

论坛徽章:
0
9 [报告]
发表于 2003-06-23 14:41 |只看该作者

文本处理SOS!!!!

可是我使用的unix上就是没有安装perl解释器,你的代码,我用不上,   是不是让你口吐3两鲜血而死~~呵呵  !!我不是系统管理员!郁闷!!!!

论坛徽章:
0
10 [报告]
发表于 2003-06-23 15:23 |只看该作者

文本处理SOS!!!!

因为要考虑空格,所以.......   
  1. awk '{print $0}
  2. /^--------/ {getline;a=$1;print $0
  3. getline;if (index($2,a)) {y+=1;print $0"\t------------------OK}"
  4. else {n+=1;print $0"\t----------------NG"}}
  5. END {printf "OK is %d\tNG is%d\n",y,n}' file >newfile
复制代码

差点忘了还要统计:)
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP