想问有关grep的函数

数据类型是如下格式:

A_Shanghai-Jinshan_13_2011    8 NSTA   0.8099     (9/9)   +++   
A_Shanghai-Jinshan_13_2011   22 NGTI   0.7020     (9/9)   ++   
A_Shanghai-Jinshan_13_2011   38 NATE   0.5016     (6/9)   +     


当第4列的数值大于0.5的时候,抓出第2列的数值,写程序逐行判断肯定没问题,但那样就不是perl的风格啦,我想用grep函数是不是可以实现呢?
但是正则表达式基础不是很好,也不知道该怎么弄,所以拿出来跟大家讨论一下,请高人指点指点,thanks

作者: camus1984   发布时间: 2011-05-13

grep 是过滤的,怎么抓第二列的值?还是说保存到别的变量中

作者: zhlong8   发布时间: 2011-05-13

那样为什么不是perl风格了,用了grep就是perl风格了?

作者: Cu_fans   发布时间: 2011-05-13



QUOTE:
grep 是过滤的,怎么抓第二列的值?还是说保存到别的变量中
zhlong8 发表于 2011-05-13 11:32




    感谢您的回复
我对grep理解的不是很透彻
第二列的值保存到别的变量中就可以了

作者: camus1984   发布时间: 2011-05-13

  1. perl -ane  'if ($F[3] > 0.5) {print $F[1],"\n"}' t  
复制代码
直接这样不就行了

作者: Cu_fans   发布时间: 2011-05-13



QUOTE:
那样为什么不是perl风格了,用了grep就是perl风格了?
Cu_fans 发表于 2011-05-13 11:32



呵呵,看其他人的程序都写的很简单,我也想尝试一下精简代码的

作者: camus1984   发布时间: 2011-05-13



QUOTE:
感谢您的回复
我对grep理解的不是很透彻
第二列的值保存到别的变量中就可以了
camus1984 发表于 2011-05-13 11:33




    这里用个 for 循环就可以了,FP 的风格是 先 grep 再 map 没必要,也不清晰

作者: zhlong8   发布时间: 2011-05-13



QUOTE:
数据类型是如下格式:

A_Shanghai-Jinshan_13_2011    8 NSTA   0.8099     (9/9)   +++   
A_Shanghai ...
camus1984 发表于 2011-05-13 11:17




# cat xx.pl
use strict;
use warnings;

my @aResult;
while(<DATA>){
  my @aData = split;
  push (@aResult, $aData[1]) if($aData[3] >= 0.5);
}
print "@aResult\n";
__DATA__
A_Shanghai-Jinshan_13_2011    8 NSTA   0.8099     (9/9)   +++
A_Shanghai-Jinshan_13_2011   22 NGTI   0.7020     (9/9)   ++
A_Shanghai-Jinshan_13_2011   38 NATE   0.5016     (6/9)   +

# perl xx.pl
8 22 38

作者: jason680   发布时间: 2011-05-13



QUOTE:
# cat xx.pl
use strict;
use warnings;

my @aResult;
while(){
  my @aData = split;
  pus ...
jason680 发表于 2011-05-13 12:21




    多谢啦

作者: camus1984   发布时间: 2011-05-13

这里用grep 不适合
#!perl
@D=<DATA>;
print join ",",map {[split(/ +/)]->[1] } grep { [split(/ +/)]->[3]>0.6 }  @D;

__DATA__
A_Shanghai-Jinshan_13_2011    8 NSTA   0.8099     (9/9)   +++   
A_Shanghai-Jinshan_13_2011   22 NGTI   0.7020     (9/9)   ++   
A_Shanghai-Jinshan_13_2011   38 NATE   0.5016     (6/9)   +

作者: ttcn_cu   发布时间: 2011-05-13