Использование регулярных выражений для поиска строкового шаблона в файле до и после - PullRequest
0 голосов
/ 02 мая 2019

У меня большой файл журнала, и я хочу получить определенную информацию из этого файла.Я пытаюсь использовать grep и regex для извлечения данных, но я никуда не попадаю.

Формат одной строки:

000.00.000.00,000,xxx,xxx.xxx.xxx,xxx

ноль = числа и x = символ

Но я хочу все после второго ',' и до последнего ','

Я пытался

grep [[a-zA-Z].\.[a-zA-Z].\.[a-zA-Z]]

и все вроде, но мне не удалосьчтобы получить это

Я надеюсь получить только:

','xxx.xxx.xxx','

но без ,.

Ответы [ 3 ]

2 голосов
/ 02 мая 2019

Использование Perl:

perl -ape 's/^.+?[a-z]+,([^,]+).*$/$1/i' file

Выход:

xxx.xxx.xxx

Пояснение:

s/              # substitute
  ^             # beginning of line
  .+?           # 1 or more any character but newline, not greedy
  [a-z]+        # 1 or more letters
  ,             # a comma
  ([^,]+)       # group 1, 1 or more non comma
  .*            # 0 or more any character but newline
  $             # end of line
/               # replace with
  $1            # content of group 1
/i              # case insensitive
1 голос
/ 02 мая 2019

Если вы в порядке с sed, не могли бы вы попробовать следующее (основываясь на вашем описании).

sed 's/\([^,]*\),\([^,]*\),\([^,].*\)\(.*\)/'"'"','"'"'\3'"'"','"'"'/'  Input_file

Здесь я использую возможность sed для хранения совпадающих значений регулярных выражений в памятикоторый мы могли бы использовать во время замены.

0 голосов
/ 02 мая 2019

Использование python:

    import re
    str = "000.00.000.00,000,xxx,xxx.xxx.xxx,xxx"
    matched = re.findall('.*([a-zA-Z]{3}\.[a-zA-Z]{3}\.[a-zA-Z]{3}),[a-zA-Z]{3}$',str)
    print(matched)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...