Regex для извлечения определенной строки из вывода - PullRequest
0 голосов
/ 07 декабря 2018

При выполнении приведенной ниже команды в Linux

root@11.222.33.38.11:~#  cat /etct/user.conf

я получу следующие данные.

[General]
ui_language=US_en

Из этого мне нужно получить значение ui_language (US_en) только с использованием обычноговыражение.

Ответы [ 2 ]

0 голосов
/ 07 декабря 2018

Вы можете передать в grep и sed:

cat foo.txt | grep 'ui_language=' | sed 's/ui_language=\(.*\)/\1/g'

Замените foo.txt на имя вашего файла.

Пример:

host$ cat foo.txt 
[General]
ui_language=US_en
host$ cat foo.txt | grep 'ui_language=' | sed 's/ui_language=\(.*\)/\1/g'
US_en
host$ 

РЕДАКТИРОВАТЬ: я не сделалне понимаю, что вы хотели использовать Java.Это не было первоначально помечено с Java.Это можно сделать с помощью следующего:

MatchExample.java

import java.util.regex.*;
import java.io.File;
import java.nio.file.Files;

public class MatchExample {

    public static void main(String[] args) throws Exception {

        byte[] bytes = Files.readAllBytes((new File(args[0])).toPath());
        String s = new String(bytes,"UTF-8");

        Pattern pattern = Pattern.compile("ui_language=(.*)");
        Matcher matcher = pattern.matcher(s);
        if (matcher.find()){
            System.out.println(matcher.group(1));
        }
    }

}

В качестве первого параметра используется имя файла.

Компиляция:

host$ javac MatchExample.java 

Выполнить:

host$ java MatchExample foo.txt 
US_en
host$ 
0 голосов
/ 07 декабря 2018
Pattern pattern = Pattern.compile("US_en");
Matcher matcher = pattern.matcher(mydata);
    if (matcher.find()){
        System.out.println(matcher.group(1));
    }

здесь mydata - это строка, из которой вы хотите получить данные

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