Chinaunix
标题:
字符串提取
[打印本页]
作者:
林间笑客
时间:
2014-12-06 09:59
标题:
字符串提取
我有这样的文件
.......
PC SDEC r2
--------------------------
0 0.5629 0.0000
1 0.4915 0.2375
2 0.4525 0.3537
3 0.3922 0.5146
4 0.3573 0.5971
5 0.3226 0.6716
......
我提取r2 下面的 5 0.3226 0.6716 的 0.6716 这个数字,文件中存在多个5 0.3226 0.6716(其他数字) 的,但是r2 是唯一的,该怎么提取呢,是现将r2 及下面的六行全提取后再提前第五行?
作者:
jason680
时间:
2014-12-06 11:34
回复
1#
林间笑客
$ perl get_r2_5.pl
0.6716
$ cat get_r2_5.pl
use strict;
use warnings;
my $sSeg_str = "r2";
my $sSeg_flg = 0;
while(<DATA>){
chomp;
my @aData = split;
next if( @aData != 3);
if($aData[0] eq
"PC"
){
$sSeg_flg = 0;
$sSeg_flg = 1 if($aData[2] eq $sSeg_str);
}
if($sSeg_flg == 1 && $aData[0] eq
"5"
){
# got it
print "$aData[2]\n";
}
}
__DATA__
PC SDEC r1
--------------------------
4 0.3573 0.5971
5 0.3226 0.6111
PC SDEC r2
--------------------------
0 0.5629 0.0000
5 0.3226 0.6716
PC SDEC r3
--------------------------
3 0.3573 0.5971
5 0.3226 0.6333
作者:
林间笑客
时间:
2014-12-08 09:41
回复
2#
jason680
如果存在多个r2 只想要最后一个r2 的5 后面的值呢
作者:
jason680
时间:
2014-12-08 14:46
回复
3#
林间笑客
save it and you will get the answer what you want after while loop
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2