grep only matching
Na maioria das vezes uso o grep para casar uma expressão
regular com as linhas de um arquivo, e nesse caso quero que o programa
mostre na saída as linhas inteiras onde o match ocorreu. Esse é o comportamento
padrão do grep. Hoje eu precisei fazer algo diferente: extrair de um documento
XHTML uma URL, que eu sabia que formato teria, mas não exatamente como ela era.
Escrever a expressão regular que casava com a URL foi simples. No entanto, o que eu queria
era que o grep não me retornasse a linha onde havia uma ocorrência, mas a
ocorrência em si. Você pode alcançar esse efeito com a opção -o (only matching).
Exemplo:
$ cat arquivo
joao tem 1 filho
maria não tem filhos
$ grep '[0-9]' arquivo
joao tem 1 filho
$ grep -o '[0-9]' arquivo
1
