Jeg udpakker webadresser fra et websted ved hjælp af cURL som nedenfor.

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

Min nye.txt-fil 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 skal dog kun udtrække nedenstående oplysninger.

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

Jeg prøver at ignorere <a href som har information i dem, og hvis titel ender med IKKE BESKYTTET .

Hvordan kan jeg ændre min grep-sætning?

Kommentarer

  • Er output du ' vises her korrekt? Teksten, der beskriver det, giver ikke ' ikke mening sammen med dette eksempel.
  • Aren ' t du leder efter curl www.somesite.com | grep "<a href=.*title=" | grep -v NOTNEEDED > new.txt?
  • @terdon, præcis det var det, jeg ledte efter. Jeg kan acceptere det som et svar, hvis du sender det.
  • Ramesh, det ' s grundlæggende @slm ' s svar. Jeg har lige redigeret det, så du kan acceptere det.
  • åh ja, jeg var ikke klar over, at pipen var så kraftig. Jeg har accepteret det som et svar. Tak!

Svar

Jeg følger ikke fuldt ud dit eksempel + beskrivelsen, men det lyder som hvad 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 dit eksempel:

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

Kommentarer

  • Jeg har en klasse i < en href-sektion. Dybest set vil jeg ikke have det i min output.

Svar

grep man-siden siger:

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

Du kan bruge regulære udtryk til flere inversioner:

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

eller

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

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *