Eu tenho muitos arquivos com as linhas que se parecem
lotsofblah/XY##_####_morefoo
onde # é um número. Agora quero mostrar apenas as partes
YZ##_####
no bash, cada um em uma nova linha, é claro.
Responder1
Supondo que você queira que XY tenha duas letras quaisquer...
Algo como
grep -Eo "[A-Z]{2}[0-9]{2}_[0-9]{4}" file
Corresponderia a [duas letras][dois números]_[quatro números]
Se você quisesse, poderia ser um pouco mais exato, certificando-se de que há um / infront e um _ depois, mas este é um ponto de partida.
Junte isso de 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.
Responder2
Suponho que XY e YZ sejam iguais e vou tratá-los como XY
egrep "XY[0-9]{2}_[0-9]{4}" filename -o
A chave é a -o
opção que mostra apenas o texto correspondente.