Ik extraheer URLs van een website met cURL zoals hieronder.
curl www.somesite.com | grep "<a href=.*title=" > new.txt
Mijn new.txt-bestand is zoals hieronder.
<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">
Ik hoef echter alleen de onderstaande informatie uit te pakken.
<a href="http://website1.com" title="something"> <a href="http://website2.com" information="something" title="something">
Ik probeer de <a href
te negeren die informatie erin en waarvan de titel eindigt op NOTNEEDED .
Hoe kan ik mijn grep-instructie wijzigen?
Reacties
Antwoord
Ik “volg uw voorbeeld + de beschrijving niet volledig, maar het klinkt zoals u want is this:
$ 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">
Dus voor jouw voorbeeld:
$ curl www.example.com | grep -v "<a href=.*title=" | grep -v NOTNEEDED > new.txt
Reacties
- Ik heb een klas in de < a href-sectie. Eigenlijk wil ik dat niet in mijn uitvoer.
Antwoord
De grep man-pagina zegt:
-v, --invert-match Invert the sense of matching, to select non-matching lines. (-v is specified by POSIX .)
U kunt reguliere expressies gebruiken voor meerdere inversies:
grep -v "red\|green\|blue"
of
grep -v red | grep -v green | grep -v blue
curl www.somesite.com | grep "<a href=.*title=" | grep -v NOTNEEDED > new.txt
?