grep command in curl

0

Estou tentando extrair algumas URLs de uma página da Web usando o comando cURL. Inicialmente, eu uso o comando cURL como abaixo.

curl www.website.com/

Agora, o site contém links para alguns outros sites que estão interessados em extrair. Então, eu faço um grep no comando cURL como abaixo.

curl www.website.com/ | grep "<a href=" > new1.txt

Ele está extraindo todas as linhas que possuem <a href= nelas. Mas estou particularmente interessado apenas nas linhas que começam com <a href= e terminam com title=

Como posso modificar o comando grep?

    
por Ramesh 10.02.2014 / 20:26

2 respostas

2

Isso deve funcionar:

curl www.website.com/ | grep '^<a href=.*title=$' > new1.txt

Isso selecionará todas as linhas que começam com <a href= e terminam em title=

Acabei de ver o comentário de Terdon. Você pode usar a opção -P com grep e fazer uma alternativa non-greedy aka lazy da seguinte forma:

curl www.website.com/ | grep -P '^<a href=.*?title=$' > new1.txt
    
por 10.02.2014 / 20:34
2

Tenha em mente que HTML não é um idioma regular , e analisá-lo com expressões regulares é quase impossível, você poderia tentar:

... | grep '^<a href=.*title=.*' > ...

Editar: Vimos que você especificou linhas que iniciam com <a href ; o cursor se encarrega dessa condição.

    
por 10.02.2014 / 20:31

Tags