Haen URL-osoitteita verkkosivustolta käyttämällä alla olevaa URL-osoitetta.

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

Uusi.txt-tiedostoni on kuten alla.

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

Minun on kuitenkin purettava vain alla olevat tiedot.

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

Yritän jättää huomiotta <a href, joissa on tiedot heissä ja joiden otsikko päättyy EI TARVITA .

Kuinka voin muokata grep-käskyni?

Kommentit

  • Onko lähtö ' näytätkö täällä oikein? Sitä kuvaavalla tekstillä ' ei ole järkeä tämän esimerkin kanssa.
  • Aren ' etsit curl www.somesite.com | grep "<a href=.*title=" | grep -v NOTNEEDED > new.txt?
  • @terdon, juuri sitä etsin. Voin hyväksyä sen vastauksena, jos lähetät sen.
  • Ramesh, se ' on pohjimmiltaan @slm ' s vastaus. Olen juuri muokannut sitä, jotta voit hyväksyä sen.
  • Voi kyllä, en tajunnut, että putki oli niin voimakas. Olen hyväksynyt sen vastauksena. Kiitos!

Vastaa

En seuraa täysin esimerkkiäsi + kuvaustasi, mutta kuulostaa siltä kuin sinä halua tämä:

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

Joten esimerkillesi:

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

Kommentit

  • Minulla on luokka < a href -osiossa. Pohjimmiltaan en halua sitä lähdössäni.

Vastaus

grep -sivulla sanotaan:

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

Voit käyttää säännöllisiä lausekkeita useille inversioille:

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

tai

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

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *