Extrag URL-uri de pe un site web folosind cURL, ca mai jos.

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

Fișierul meu new.txt este cel de mai jos.

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

Cu toate acestea, trebuie să extrag doar informațiile de mai jos.

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

Încerc să ignor <a href care au informații în ele și al căror titlu se termină cu NOTNEEDED .

Cum îmi pot modifica declarația grep?

Comentarii

  • Este ieșirea ' afișați aici corect? Textul care îl descrie nu are sens ' nu are sens împreună cu acest exemplu.
  • Nu ' nu îl căutați curl www.somesite.com | grep "<a href=.*title=" | grep -v NOTNEEDED > new.txt?
  • @terdon, exact asta căutam. Îl pot accepta ca răspuns dacă îl postați.
  • Ramesh, ' este practic @slm ' răspunsul lui. Tocmai l-am editat, astfel încât să îl puteți accepta.
  • da, nu mi-am dat seama că pipa era atât de puternică. L-am acceptat ca răspuns. Mulțumesc!

Răspunde

Nu „urmez pe deplin exemplul tău + descrierea, dar sună ca ceea ce tu want is this:

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

Deci, pentru exemplul dvs.:

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

Comentarii

  • Am o clasă în secțiunea < href. Practic, nu vreau asta în rezultatul meu.

Răspuns

Pagina de manual grep spune:

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

Puteți utiliza expresii regulate pentru inversiuni multiple:

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

sau

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

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *