1

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

lotsofblah/XY##_####_morefoo

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

YZ##_####

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

2 ответа2

2

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

Что-то вроде

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

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

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

Соберите это от 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

0

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .