找出并打印文件中的十进制值

时间:2013-12-18 08:30:05

标签: regex perl

我想在文件中显示所有十进制数

我的代码

my $input = $ARGV[0];
open(FILE, $input) or die $!;  
my @lines = <FILE>;
foreach(@lines){
  $line++;
  if($_ =~ '\d+'){
  print "magic number found in line number".$line."\n";
  }

     }
 close(FILE1);

OUTPUT I GET

magic number found in line number 30

我需要的输出

magic number 10 found in line number 30.

如何显示小数值。

我还需要打印HEXADECIMAL和OCTALS数字。 使用[0-9a-fA-F。] +十六进制的正则表达式给我随机输出

2 个答案:

答案 0 :(得分:3)

无需显式打开文件或将其读入数组。这个程序将按照你的要求进行

use strict;
use warnings;

while (<>) {
  print "magic number $1 found in line number $.\n" if /(\d[\d.]*)/;
}

答案 1 :(得分:0)

另一种解决方案:

egrep -won '0x[0-9A-Fa-f][0-9A-Fa-f]*|[0-9][0-9]*'

(w:单词边界.o:只打印匹配,而不是整行.n:也添加行号)

将打印:

line:value

(如果同一行上有多个值,也可以使用!它会显示尽可能多的“line:value”,因为匹配)

在您自己的代码提取中显示:

1:0

(即,在第1行,我们看到“0”)