我对perl很新,并试图找出如何解析制表符分隔文件中的行,并将解析后的行中的值与特定值进行比较,然后打印该行。
例如:我想打印出所有数字大于3的所有行。
A 2.4 6.9 3.1
B 10.2 3.4 7.6
C 1.9 2.6 2.3
我想输出
B 10.2 3.4 7.6
因为B是所有数字大于3的唯一行
提前致谢
答案 0 :(得分:3)
使用Text :: CSV CPAN模块将制表符分隔的文件解析为数组数组
循环遍历所有记录。对于每条记录
检查字段1,2和3是否大于阈值。对于3个字段,使用简单的“if”,对于大量字段,请使用grep
如果所有字段都较大,请将记录打印到STDOUT
答案 1 :(得分:1)
您可以使用split
:http://perldoc.perl.org/functions/split.html
假设您已将文件中的一行读入$inString
,您可以使用:
($letter, $n1, $n2, $n3) = split('\t', $inString);
(模式的'\ t'是制表符。)
然后检查$ n1,$ n2和$ n3是否都大于3,如果是,则打印$inString
。
这也假设您在每一行上都有一定数量的值(在您的示例中为三个)。如果情况并非总是这样,您可以将split
的返回值放入数组并检查除第一个之外的所有元素。