У меня много файлов, строки которых выглядят как
lotsofblah/XY##_####_morefoo
где # это число. Теперь я хочу показать только части
YZ##_####
в Bash, каждый в новой строке, конечно.
Предполагая, что вы хотите, чтобы 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.
Я полагаю, что XY и YZ одинаковы, и я буду относиться к ним так же, как XY
egrep "XY[0-9]{2}_[0-9]{4}" filename -o
Ключ - опция -o
которая показывает только соответствующий текст.