Как показать части текста, содержащие регулярные выражения

Как показать части текста, содержащие регулярные выражения

У меня много файлов, строки которых выглядят так:

lotsofblah/XY##_####_morefoo

где # - это число. Теперь я хочу показать только части

YZ##_####

в bash, каждый в новой строке, конечно.

решение1

Предположим, вы хотите, чтобы XY состоял из любых двух букв...

Что-то вроде

grep -Eo "[A-Z]{2}[0-9]{2}_[0-9]{4}" file

Будет соответствовать [двум буквам][двум цифрам]_[четырем цифрам]

Если хотите, можно было бы написать немного точнее, убедившись, что в начале стоит /, а после — _, но это отправная точка.

Соберите это из man grep:

-E, --extended-regexp
          Interpret PATTERN as an extended regular expression (see below)

-o, --only-matching
          Show only the part of a matching line that matches PATTERN.

иhttp://www.regular-expressions.info/reference.html

решение2

Я предполагаю, что XY и YZ — это одно и то же, и я буду относиться к ним просто как к XY.

egrep "XY[0-9]{2}_[0-9]{4}" filename -o

Ключевым является -oпараметр, который показывает только совпадающий текст.

Связанный контент