Estoy extrayendo URL de un sitio web usando cURL como se muestra a continuación.

curl www.somesite.com | grep "<a href=.*title=" > new.txt 

Mi archivo new.txt es el siguiente.

<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"> 

Sin embargo, solo necesito extraer la siguiente información.

<a href="http://website1.com" title="something"> <a href="http://website2.com" information="something" title="something"> 

Estoy tratando de ignorar las <a href que tienen información en ellos y cuyo título termina con NOTNEEDED .

¿Cómo puedo modificar mi declaración grep?

Comentarios

  • ¿El resultado es ' ¿se muestra aquí correcto? El texto que lo describe no ' no tiene sentido junto con este ejemplo.
  • ¿No es ' lo que busca curl www.somesite.com | grep "<a href=.*title=" | grep -v NOTNEEDED > new.txt?
  • @terdon, eso era exactamente lo que estaba buscando. Puedo aceptarlo como respuesta si lo publicas.
  • Ramesh, es ' básicamente @slm ' s respuesta. Lo acabo de editar para que puedas aceptarlo.
  • oh sí, no me di cuenta de que la tubería era tan poderosa. Lo he aceptado como respuesta. ¡Gracias!

Responder

No estoy siguiendo completamente su ejemplo + la descripción, pero parece que Lo que quiero es esto:

$ 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"> 

Entonces, para su ejemplo:

$ curl www.example.com | grep -v "<a href=.*title=" | grep -v NOTNEEDED > new.txt 

Comentarios

  • Tengo una clase en la < una sección href. Básicamente, no quiero eso en mi salida.

Respuesta

La página de manual de grep dice:

-v, --invert-match Invert the sense of matching, to select non-matching lines. (-v is specified by POSIX .) 

Puede usar expresiones regulares para múltiples inversiones:

grep -v "red\|green\|blue" 

o

grep -v red | grep -v green | grep -v blue 

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *