想问有关grep的函数
时间:2011-05-13
来源:互联网
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
作者: zhlong8 发布时间: 2011-05-13
作者: Cu_fans 发布时间: 2011-05-13
zhlong8 发表于 2011-05-13 11:32
感谢您的回复
我对grep理解的不是很透彻
第二列的值保存到别的变量中就可以了
作者: camus1984 发布时间: 2011-05-13
- perl -ane 'if ($F[3] > 0.5) {print $F[1],"\n"}' t
作者: Cu_fans 发布时间: 2011-05-13
Cu_fans 发表于 2011-05-13 11:32
呵呵,看其他人的程序都写的很简单,我也想尝试一下精简代码的
作者: camus1984 发布时间: 2011-05-13
我对grep理解的不是很透彻
第二列的值保存到别的变量中就可以了
camus1984 发表于 2011-05-13 11:33
这里用个 for 循环就可以了,FP 的风格是 先 grep 再 map 没必要,也不清晰
作者: zhlong8 发布时间: 2011-05-13
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
use strict;
use warnings;
my @aResult;
while(){
my @aData = split;
pus ...
jason680 发表于 2011-05-13 12:21
多谢啦
作者: camus1984 发布时间: 2011-05-13
#!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
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28