Como mostrar partes regexp do texto

Como mostrar partes regexp do texto

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.

ehttp://www.regular-expressions.info/reference.html

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 -oopção que mostra apenas o texto correspondente.

informação relacionada