Jeg trekker ut nettadresser fra et nettsted ved hjelp av cURL som nedenfor.

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

Den nye.txt-filen min er som nedenfor.

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

Jeg trenger imidlertid bare å trekke ut informasjonen nedenfor.

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

Jeg prøver å ignorere <a href som har informasjon i dem og hvis tittel slutter med IKKE NOTEDED .

Hvordan kan jeg endre grep-setningen min?

Kommentarer

  • Er resultatet du ' vises her riktig? Teksten som beskriver den, gir ikke ' t sammen med dette eksemplet.
  • Aren ' t du leter etter curl www.somesite.com | grep "<a href=.*title=" | grep -v NOTNEEDED > new.txt?
  • @terdon, akkurat det var det jeg lette etter. Jeg kan godta det som et svar hvis du legger det ut.
  • Ramesh, det ' er i utgangspunktet @slm ' s svar. Jeg har nettopp redigert det slik at du kan godta det.
  • åh, jeg skjønte ikke at pipen var så kraftig. Jeg har godtatt det som et svar. Takk!

Svar

Jeg følger ikke eksemplet ditt helt + beskrivelsen, men det høres ut som det du ønsker er dette:

$ 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å for eksempelet ditt:

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

Kommentarer

  • Jeg har en klasse i < en href-seksjon. I utgangspunktet vil jeg ikke ha det i utdataene mine.

Svar

grep man-siden sier:

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

Du kan bruke vanlige uttrykk for flere inversjoner:

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

eller

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

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *