我有以下输出:

22.0 MiB +  27.1 MiB =  49.2 MiB       process1
78.9 MiB + 636.5 KiB =  79.5 MiB       process2

我需要最后一列,所以我使用以下正则表达式,我将(XX MiB值和processX放在两个组$ 1和$ 2中)

/([^=]+)\s([a-z].*)/

结果:

49.2 MiB
79.5 MiB

我想忽略/删除正则表达式组中的MiB ,我该如何删除?

#1楼 票数:1 已采纳

您可以使用,

=\s*(\d+\.\d+)\s*\w+\s*(\w+)

工作演示

#2楼 票数:0

只是不要捕获您不想保留的内容:

#!/usr/bin/perl
use warnings;
use strict;

while (<DATA>) {
    /= \s* ([0-9.]+) \s MiB/x and print $1, "\n";
}

__DATA__
22.0 MiB +  27.1 MiB =  49.2 MiB       process1
78.9 MiB + 636.5 KiB =  79.5 MiB       process2

#3楼 票数:0

尝试这个 :

if ( $_ =~  /(=\s+)(.*[\d\.]+)/ ) {
      print "$2\n";
  }; 

#4楼 票数:0

 m{ = ([0-9]+ (?: [.][0-9]+)? ) \s+ \S+ \s+ (\S+) }x

  ask by Satish translate from so

未解决问题?本站智能推荐:

5回复

Perl正则表达式问题!

我正在从文件中读取一个字符串: 2343,0,1,0 ... 500次...... 3 以上是从文件中读取$_的示例。 它是任意数字,后跟500逗号分隔0/1然后是数字3。 我正在使用chop来从字符串的末尾获取数字3。 然后匹配第一个数字,然后$i出现次数为0,或
1回复

Perl正则表达式问题

我在perl脚本中有此条件: $ lnFea代表这种行: 0 qid:7968 1:0.000000 2:0.000000 3:0.000000 4:0.000000 5:0.000000 6:0.000000 7:0.000000 8:0.000000 9:0.000000 10
2回复

在Perl中创建正则表达式以提取值

我在Ubuntu 12.04机器上从Perl脚本中的变量中提取某些值时遇到麻烦。 我查看了以下页面: 如何按照模式提取字符串 这就是我想要做的。 我需要在特定模式后提取字符串值。 到目前为止,这是我的代码: 它会返回Model字符串,但不会返回SerialNo字符串。
5回复

Perl使用哪种正则表达式的POSIX风格?

具体来说,我正在使用Linux命令: 我只是想确保我使用的POSIX类型是Perl使用的类型,因为这是迄今为止我最熟悉的类型。
2回复

Perl中的正则表达式数值范围失败

我的脚本需要使用正则表达式-3.13.0-24-generic查找特定的Linux内核版本。 我试过了: 但这不起作用。 如何匹配我的内核版本? 为什么上面的正则表达式无法匹配3.13.0-24-generic? 基于注释的其他信息: 我正在编辑SystemImage
1回复

Perl文件中的正则表达式cdata

请帮帮我 在终端: C no longer supported in regex; marked by <-- HERE in m/<host><!\\[\\ <-- HERE CDATA\\[(.*)\\]\\]\\></host>/
2回复

用组替换perl正则表达式

我有以下json输入 在我的ksh脚本中,我希望将timevalue替换为我的值。 所以我用工作组创建了这个正则表达式 但是...我不能用数字代替,因为perl使用数字来定义组..所以这个显然不起作用 我可以通过两步替换来克服这个问题 但我敢肯定,有更好,更优雅
2回复

Perl一字型+正则表达式以匹配单词的一部分

我根据以下规则编写一个Perl线性代码来匹配IP地址: 比赛只有三个第一八位字节而四个字节的必须是有效的0-255,附加到该号码或“”一定不是第一个字节,数或之前就存在。“”一定不能也存在四个字节后面 例 应该匹配的IP的示例 不应该匹配的IP的示例 所以这是