Jag extraherar webbadresser från en webbplats med hjälp av CURL enligt nedan.

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

Min nya.txt-fil är som nedan.

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

Jag behöver emellertid endast extrahera informationen nedan.

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

Jag försöker ignorera <a href som har information i dem och vars titel slutar med INTE NOTERAD .

Hur kan jag ändra mitt grep-uttalande?

Kommentarer

  • Är resultatet du ' visas här rätt? Texten som beskriver det är inte ' t meningsfullt tillsammans med detta exempel.
  • Aren ' t du letar efter curl www.somesite.com | grep "<a href=.*title=" | grep -v NOTNEEDED > new.txt?
  • @terdon, precis det var det jag letade efter. Jag kan acceptera det som ett svar om du lägger upp det.
  • Ramesh, det ' är i grund och botten @slm ' s svar. Jag har just redigerat det så att du kan acceptera det.
  • Åh ja, jag visste inte att pipan var så kraftfull. Jag har accepterat det som ett svar. Tack!

Svar

Jag följer inte ditt exempel + beskrivningen men det låter som du vill ha det här:

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

Så för ditt exempel:

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

Kommentarer

  • Jag har en klass i < en href-sektion. I grund och botten vill jag inte ha det i min produktion.

Svar

grep mansidan säger:

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

Du kan använda reguljära uttryck för flera inversioner:

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

eller

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

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *