Usando expressões regulares para extrair o conteúdo do arquivo [closed]

4

Eu tenho um link e gostaria de retornar apenas o conteúdo entre www. e .com

por exemplo, www.blablabla.com retornaria apenas blablabla

Como eu poderia fazer isso? Quando eu uso grep '\.[a-zA-Z0-9\.-]*\. ', isso me dá .blablabla.

    
por pnom 02.05.2016 / 20:00

2 respostas

4

$ echo "www.blablabla.com" | grep -oP '(?<=\.)[a-zA-Z0-9\.-]*(?=\.)' 
blablabla

-o - imprime somente partes correspondentes da linha correspondente

-P - Use o regex Perl

(?<=\.) - após um literal . , também conhecido como "look-behind positivo" ...

[a-zA-Z0-9\.-]* - corresponde a zero ou mais instâncias de & caracteres maiúsculos, números 0-9, literal . e hífen ...

(?=\.) - seguido por um literal . , também conhecido como "look-ahead" positivo

Veja este link para mais informações sobre olhar ao redor . Ferramentas como o link podem ajudá-lo a detalhar suas expressões regulares.

    
por 02.05.2016 / 20:11
0

sed solução:

$ str='Hellowww.hello.comMywww.world.comWorld'

$ echo "$str" | sed -e 's/com/com\n/g' | sed -ne '/.*www\.\(.*\)\.com.*/{ s///p }'
hello
world
    
por 02.05.2016 / 20:56