Extrag URL-uri de pe un site web folosind cURL, ca mai jos.
curl www.somesite.com | grep "<a href=.*title=" > new.txt
Fișierul meu new.txt este cel de mai jos.
<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">
Cu toate acestea, trebuie să extrag doar informațiile de mai jos.
<a href="http://website1.com" title="something"> <a href="http://website2.com" information="something" title="something">
Încerc să ignor <a href
care au informații în ele și al căror titlu se termină cu NOTNEEDED .
Cum îmi pot modifica declarația grep?
Comentarii
Răspunde
Nu „urmez pe deplin exemplul tău + descrierea, dar sună ca ceea ce tu 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">
Deci, pentru exemplul dvs.:
$ curl www.example.com | grep -v "<a href=.*title=" | grep -v NOTNEEDED > new.txt
Comentarii
- Am o clasă în secțiunea < href. Practic, nu vreau asta în rezultatul meu.
Răspuns
Pagina de manual grep spune:
-v, --invert-match Invert the sense of matching, to select non-matching lines. (-v is specified by POSIX .)
Puteți utiliza expresii regulate pentru inversiuni multiple:
grep -v "red\|green\|blue"
sau
grep -v red | grep -v green | grep -v blue
curl www.somesite.com | grep "<a href=.*title=" | grep -v NOTNEEDED > new.txt
?