Extrahuji adresy URL z webu pomocí cURL, jak je uvedeno níže.

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

Můj soubor new.txt je uveden níže.

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

Musím však extrahovat pouze níže uvedené informace.

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

Snažím se ignorovat <a href, které mají informace v nich a jejichž název končí na NOTNEEDED .

Jak mohu upravit své prohlášení grep?

Komentáře

  • Je výstupem ' zobrazujete zde správně? Text, který ho popisuje, nemá spolu s tímto příkladem smysl.
  • Aren ' t hledáte curl www.somesite.com | grep "<a href=.*title=" | grep -v NOTNEEDED > new.txt?
  • @terdon, přesně to jsem hledal. Mohu ji přijmout jako odpověď, pokud ji zveřejníte.
  • Ramesh, je to ' s v podstatě @slm ' s odpovědí. Právě jsem to upravil, abyste to mohli přijmout.
  • ach jo, neuvědomil jsem si, že dýmka byla tak silná. Přijal jsem to jako odpověď. Děkujeme!

Odpověď

Nesleduji úplně váš příklad + popis, ale zní to jako to, co vy chcete toto:

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

Takže pro váš příklad:

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

Komentáře

  • Mám třídu v sekci < href. V zásadě to ve svém výstupu nechci.

Odpověď

Manuální stránka grep říká:

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

Regulární výrazy můžete použít pro více inverzí:

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

nebo

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

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *