Estou extraindo URLs de um site usando cURL como abaixo.
curl www.somesite.com | grep "<a href=.*title=" > new.txt
Meu arquivo new.txt é o seguinte.
<a href="http://website1.com" title="something"> <a href="http://website1.com" information="something" title="something"> <a href="http://website2.com" title="some_other_thing"> <a href="http://website2.com" information="something" title="something"> <a href="http://websitenotneeded.com" title="something NOTNEEDED">
No entanto, preciso extrair apenas as informações abaixo.
<a href="http://website1.com" title="something"> <a href="http://website2.com" information="something" title="something">
Estou tentando ignorar <a href
que tem informações neles e cujo título termina com NOTNEEDED .
Como posso modificar minha instrução grep?
Comentários
Resposta
Não estou seguindo totalmente o seu exemplo + a descrição, mas parece o que você quero é este:
$ grep -v "<a href=.*title=.*NOTNEEDED" sample.txt <a href="http://website1.com" title="something"> <a href="http://website1.com" information="something" title="something"> <a href="http://website2.com" title="some_other_thing"> <a href="http://website2.com" information="something" title="something">
Então, para seu exemplo:
$ curl www.example.com | grep -v "<a href=.*title=" | grep -v NOTNEEDED > new.txt
Comentários
- Tenho uma aula na seção < a href. Basicamente, não quero isso na minha saída.
Resposta
A página do manual grep diz:
-v, --invert-match Invert the sense of matching, to select non-matching lines. (-v is specified by POSIX .)
Você pode usar expressões regulares para múltiplas inversões:
grep -v "red\|green\|blue"
ou
grep -v red | grep -v green | grep -v blue
curl www.somesite.com | grep "<a href=.*title=" | grep -v NOTNEEDED > new.txt
?