grep для ігнорування шаблонів


12

Я витягую URL-адреси з веб-сайту за допомогою CURL, як показано нижче.

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

Мій новий файл.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">
<a href="http://websitenotneeded.com" title="something NOTNEEDED">

Однак мені потрібно витягнути лише наведену нижче інформацію.

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

Я намагаюся ігнорувати, <a hrefякі в них є інформація і чия назва закінчується на NOTNEED .

Як я можу змінити свою заяву grep?


Чи правильний результат, який ви тут показуєте? Текст, що описує це, не має сенсу разом з цим прикладом.
slm

1
Ви не шукаєте curl www.somesite.com | grep "<a href=.*title=" | grep -v NOTNEEDED > new.txt?
terdon

@terdon, саме це я шукав. Я можу прийняти це як відповідь, якщо ви його опублікуєте.
Рамеш

Рамеш, це в основному відповідь @ slm. Я щойно відредагував його, щоб ви могли прийняти його.
тердон

о так, я не розумів, що труба така потужна. Я прийняв це як відповідь. Дякую!
Рамеш

Відповіді:


17

Я не повністю дотримуюся вашого прикладу + опису, але це звучить як ви хочете, це таке:

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

Тож для вашого прикладу:

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

У мене клас у розділі <href. В принципі, я цього не хочу в своєму виході.
Рамеш

9

Сторінка Grep Man говорить:

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

Ви можете використовувати регулярні вирази для кількох перетворень:

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

або

grep -v red | grep -v green | grep -v blue
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.