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
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
curl www.somesite.com | grep "<a href=.*title=" | grep -v NOTNEEDED > new.txt
?