HPUX PARISC中物理内存的正则表达式

时间:2011-06-29 10:39:18

标签: java regex

输入

grep "Physical" /var/adm/syslog/syslog.log

输出

 May  4 21:07:00 getz vmunix:     Physical: 6289408 Kbytes, lockable: 4604660 Kbytes, available: 5417880 Kbytes

或从下方获取6289408

May  4 21:07:00 getz vmunix:     Physical: 6289408 Kbytes

我只希望Physical:的值只是数字,我怎样才能在简单的正则表达式中使用java(但我只需要正则表达式)?

注意:您可以为我测试正则表达式 here

更新

让我更清楚地说明问题。

  1. 我有我的java代码,我正在编写插件
  2. 我只需要以某种方式得到HPUXPARISC系统的物理内存,无论有没有正则表达式,我都需要从输出中得到 6289408

    May  4 21:07:00 getz vmunix:     Physical: 6289408 Kbytes, lockable: 4604660 Kbytes, available: 5417880 Kbytes
    
  3. 这是我使用命令grep "Physical" /var/adm/syslog/syslog.log找出物理内存的输出

3 个答案:

答案 0 :(得分:3)

使用awk

awk '{print $7}' input
6289408

cut -d" " -f7 input

perl的

perl -lane 'print $F[6]'

在您的更新中,您添加了java;这是一个有效的例子:

import java.util.regex.*;

public class SimpleRegexTest {
    public static void main(String[] args)
    {
        String sampleText = " May  4 21:07:00 getz vmunix:     Physical: 6289408 Kbytes, lockable: 4604660 Kbytes, available: 5417880 Kbytes";
        String sampleRegex = "Physical: (\\d+)";
        java.util.regex.Pattern p = java.util.regex.Pattern.compile(sampleRegex);
        java.util.regex.Matcher m = p.matcher(sampleText);

        if (m.find()) {
            String matchedText = m.group(1);
            System.out.println(matchedText);
        } else {
            System.out.println("didn't match");
        }
    }
}

给出:

$ java SimpleRegexTest
6289408

答案 1 :(得分:2)

捕获Physical: (\d+)

的第1组

这是java解决方案:

public static void main(String[] args)
{
    String input = " May  4 21:07:00 getz vmunix:     Physical: 6289408 Kbytes, lockable: 4604660 Kbytes, available: 5417880 Kbytes";
    String regex = "^.*Physical: (\\d*) .*$"; // <-- LOOK HERE FOR REGEX!
    String physical = input.replaceAll(regex, "$1"); // <-- How to extract group 1 in java
    System.out.println(physical); // "6289408"
}

如果您还需要捕获单位,请使用:

    String physical = input.replaceAll("^.*Physical: (\\d*) (\\w*).*$", "$1 $2"); // "6289408 Kbytes"

答案 2 :(得分:0)

(物理\:\ S \ d {0,10}) 这比\ d +

更好