Regex 查找并打印文件中的十进制值
我想显示一个文件中的所有十进制数 我的代码Regex 查找并打印文件中的十进制值,regex,perl,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); 我需要的输出 magic numb
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);
我需要的输出
magic number 10 found in line number 30.
如何显示十进制值呢
我还需要打印十六进制和八进制数字。
将[0-9a-fA-F.]+regex用于十六进制可以提供随机输出无需显式打开文件或将其读入数组。这个程序会满足你的要求
use strict;
use warnings;
while (<>) {
print "magic number $1 found in line number $.\n" if /(\d[\d.]*)/;
}
使用严格;
使用警告;
而(){
如果/(\d[\d.]*)/,则打印“在行号$中找到幻数$1.\n”;
}
无需显式打开文件或将其读入数组。这个程序会满足你的要求
use strict;
use warnings;
while (<>) {
print "magic number $1 found in line number $.\n" if /(\d[\d.]*)/;
}
使用严格;
使用警告;
而(){
如果/(\d[\d.]*)/,则打印“在行号$中找到幻数$1.\n”;
}
无需显式打开文件或将其读入数组。这个程序会满足你的要求
use strict;
use warnings;
while (<>) {
print "magic number $1 found in line number $.\n" if /(\d[\d.]*)/;
}
使用严格;
使用警告;
而(){
如果/(\d[\d.]*)/,则打印“在行号$中找到幻数$1.\n”;
}
无需显式打开文件或将其读入数组。这个程序会满足你的要求
use strict;
use warnings;
while (<>) {
print "magic number $1 found in line number $.\n" if /(\d[\d.]*)/;
}
使用严格;
使用警告;
而(){
如果/(\d[\d.]*)/,则打印“在行号$中找到幻数$1.\n”;
}
另一种解决方案:
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”)另一个解决方案:
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”)另一个解决方案:
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”)另一个解决方案:
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”)一个十进制值,如
10.5609
yes所示。整数和浮点都是十进制值,如10.5609
yes。整数和浮点都是十进制值,如10.5609
yes。整数和浮点都是十进制值,如10.5609
yes。整型和浮点型你们能告诉我用regex命令搜索十六进制和八进制数吗。使用[0-9a-fA-F.]+表示十六进制会给我随机的答案。正则表达式显然无法区分十六进制数a
和单词a
。但是,您可以通过在单词边界锚定\b
中围绕模式获得一些好处,这将确保字符串前面或后面没有字母数字字符。尝试使用八进制的/\b([[:xdigit:][]+)\b/
或/\b([0-7]+)\b/
。好的,但我想如果十六进制以0x开头,那么我们可以使用/0x[0-9a-fA-F.]+/。但是我在打印值时出错了,行号正在打印。你能告诉我regex命令搜索十六进制和八进制数字吗。使用[0-9a-fA-F.]+表示十六进制会给我随机的答案。正则表达式显然无法区分十六进制数a
和单词a
。但是,您可以通过在单词边界锚定\b
中围绕模式获得一些好处,这将确保字符串前面或后面没有字母数字字符。尝试使用八进制的/\b([[:xdigit:][]+)\b/
或/\b([0-7]+)\b/
。好的,但我想如果十六进制以0x开头,那么我们可以使用/0x[0-9a-fA-F.]+/。但是我在打印值时出错了,行号正在打印。你能告诉我regex命令搜索十六进制和八进制数字吗。使用[0-9a-fA-F.]+表示十六进制会给我随机的答案。正则表达式显然无法区分十六进制数a
和单词a
。但是,您可以通过在单词边界锚定\b
中围绕模式获得一些好处,这将确保字符串前面或后面没有字母数字字符。尝试使用八进制的/\b([[:xdigit:][]+)\b/
或/\b([0-7]+)\b/
。好的,但我想如果十六进制以0x开头,那么我们可以使用/0x[0-9a-fA-F.]+/。但是我在打印值时出错了,行号正在打印。你能告诉我regex命令搜索十六进制和八进制数字吗。使用[0-9a-fA-F.]+表示十六进制会给我随机的答案。正则表达式显然无法区分十六进制数a
和单词a
。但是,您可以通过在单词边界锚定\b
中围绕模式获得一些好处,这将确保字符串前面或后面没有字母数字字符。尝试使用八进制的/\b([[:xdigit:][]+)\b/
或/\b([0-7]+)\b/
。好的,但我想如果十六进制以0x开头,那么我们可以使用/0x[0-9a-fA-F.]+/。但是我在打印值时出错了,行号是fine对不起,我没有清楚地提到它,我正在一个.C文件上运行perl脚本,现在小数/八进制工作正常。我在打印诸如“0x5A3”之类的十六进制时遇到问题,对不起,我弄乱了0