[Resolvido]Expressões regulares, uma dúvida.

Iniciado por Klausterfullbya, 12 de Fevereiro de 2011, 22:36

tópico anterior - próximo tópico

Klausterfullbya

Olá pessoal,

estou estudando expressões regulares no Linux, e estou com dúvida.

Ao ter um arquivo chamado "teste.txt" com o seguinte conteúdo:
CitarMs
M
Msso

Ao fazer o comando: cat teste.txt | grep ^M.*
Aparece o "M" incluso. Isto não era para acontecer, eu acho, pois o "M" foi dito como um padrão, e uma letra qualquer depois dele (através do "ponto").  De certa forma parece que o asterísco nesta situação "regride" uma "casa". É estranho.

Ao realizar o comando dessa forma: cat teste.txt | grep ^M.
Funciona sem problemas. Encontrando de fato o "Ms" e o "Msso".

Outra questão também é que eu estava tentando capturar padrões com início em uma letra, e final com outra. Por exemplo:
Quero achar a palavra "música". Então farei assim:
cat teste.txt | grep ^m
Porém, queria saber como "juntar" com o término da palavra também..Algo do tipo:
cat teste.txt | grep ^m && ca$
(Do tipo, encontre um padrão que comece com "m" e termine com "ca").
Entenderam? rs

Agradeço desde já, e parabéns pelo fórum! =)
Imagine aqui uma mulher gata só com uma camisa do Linux numa cama! =D

irtigor

1-Sim o asterisco faz diferença, recomendo um livro de er: http://guia-er.sourceforge.net/asterisco.html

2- echo -e "b\nbola\nbolo\nbota\nbla\nboola" | grep ^b.\*la$ - começa com "b", qualquer quantidade de caracteres (inclusive nenhum) e terminado em "la".
echo -e "b\nbola\nbolo\nbota\nbla\nboola" | grep ^b.la$ - começa com "b", um caractere qualquer e terminado com "la".

Klausterfullbya

irtigor,

muito obrigado pelo link! Me ajudou MUITO!
=)
Abraços!
Imagine aqui uma mulher gata só com uma camisa do Linux numa cama! =D