регулярное выражение для физической памяти в HPUXPARISC - PullRequest
0 голосов
/ 29 июня 2011

Вход

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 (но мне просто нужно здесь регулярное выражение)?

Примечание : Вы можете проверить регулярное выражение для меня здесь

Обновление

Позвольте мне прояснить вопрос.

  1. У меня есть Java-код, я пишу плагины
  2. Мне просто нужно получить физической памяти системы HPUXPARISC каким-то образом, с или без регулярного выражения, мне нужно получить значение 6289408 из выходных данных ниже *

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

, который является моим выходом для определения физической памяти с помощью команды grep "Physical" /var/adm/syslog/syslog.log

Ответы [ 3 ]

3 голосов
/ 29 июня 2011

Использование 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
2 голосов
/ 29 июня 2011

Группа захвата 1 из Physical: (\d+)

Вот решение 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"
0 голосов
/ 29 июня 2011

(Физический \: \ s \ d {0,10}) Это лучше чем \ d +

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...