Wyodrębniam adresy URL z witryny internetowej za pomocą cURL, jak poniżej.

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

Mój nowy plik.txt wygląda jak poniżej.

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

Jednak muszę wyodrębnić tylko poniższe informacje.

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

Próbuję zignorować <a href, które mają informacje w nich i których tytuł kończy się na NOTNEEDED .

Jak mogę zmodyfikować instrukcję grep?

Komentarze

  • Czy dane wyjściowe są ' wyświetlasz się tutaj, prawda? Opisujący go tekst nie ' nie ma sensu razem z tym przykładem.
  • Aren ' t szukasz curl www.somesite.com | grep "<a href=.*title=" | grep -v NOTNEEDED > new.txt?
  • @terdon, dokładnie tego szukałem. Mogę zaakceptować to jako odpowiedź, jeśli ją opublikujesz.
  • Ramesh, to ' to w zasadzie @slm ' odpowiedź. Właśnie go zredagowałem, więc możesz to zaakceptować.
  • o tak, nie zdawałem sobie sprawy, że fajka jest tak potężna. Przyjąłem to jako odpowiedź. Dzięki!

Odpowiedź

Nie rozumiem w pełni twojego przykładu + opisu, ale brzmi to tak, jak ty chcę to:

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

Na przykład:

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

Komentarze

  • Mam klasę w sekcji < a href. Zasadniczo nie chcę tego w moich wynikach.

Odpowiedź

Strona podręcznika grep mówi:

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

Do wielu inwersji możesz użyć wyrażeń regularnych:

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

lub

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

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *