Como mostrar partes regulares do texto

1

Eu tenho muitos arquivos em que as linhas parecem

lotsofblah/XY##_####_morefoo

onde # é um número. Agora eu quero mostrar apenas as partes

YZ##_####

no bash, cada um em uma nova linha de curso.

    
por user_unknown 04.02.2011 / 15:28

2 respostas

2

Supondo que você queira que XY tenha duas letras ...

Algo como

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

Corresponde 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.

Coloque isso junto 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.

e link

    
por 04.02.2011 / 15:44
0

Eu suponho que XY e YZ são os mesmos, e eu vou tratá-los apenas como XY

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

A chave é a opção -o que mostra apenas o texto correspondente.

    
por 04.02.2011 / 15:41

Tags