bash: wget стандартный вывод grep "word", если не существует grep "word2" print word | word2 - PullRequest
0 голосов
/ 03 ноября 2011

Недавно я наткнулся на новый сайт pwnedlist.com, который отслеживает скомпрометированные учетные записи электронной почты.

Я подумал, что для меня будет хорошей практикой попытаться запросить каждое электронное письмо из списка.

У меня есть все, что я сделал, хорошо и здорово, но моя проблема в том, что я не знаю хорошего метода для сделайте так, чтобы stdout проходил через оба grep без повторного вызова второй строки. Вот что у меня так далеко ...

    #!/usr/local/bin/bash

    if [ -z "$1" ]
    then
            echo "Usage: $0 <list>"
    exit
    fi

    for address in $(cat $1)
    do

    echo -n "$address       "
    wget -O - --post-data "query_input=$address" pwnedlist.com/query 2>/dev/null |
    grep -i congrats | cut -d '>' -f 2 | cut -d '<' -f 1

    done
    echo

Это работает так, как я хочу:

    $ ./querypwnlist testfile
    jonschipp@gmail.com     Congrats! Your email is not in our list.
    somebody@somebody.com   Congrats! Your email is not in our list.
    crap@crap.com           Congrats! Your email is not in our list.

Моя проблема в том, что мне нужно найти способ найти другой параметр, не очень хороший

   grep -i "we found"

- это строка, которая мне нужна.

Вот HTML:

   <div id="query_result_negative" class='query_result_footer'>... we found your email/username in our database. It was last seen on 2011-08-30. Please read on.</div>

Я пробовал это в надежде, что это напечатало бы и те "скомпрометированные" электронные письма, но это не сработало, моя логика неверна.

   wget ..... | ( grep -i congrats || grep -i "we found" ) | cut ....

Кроме того, мой выбор вариантов резки выглядит довольно громоздко / излишне, есть идеи для чего-нибудь более чистого? Используя одну команду вместо отправки через cut во второй раз?

Вот HTML:

    <div id="query_result_negative" class='query_result_footer'>Congrats! Your email is not in our list.</div>

Любая помощь приветствуется, спасибо!

1 Ответ

2 голосов
/ 03 ноября 2011

Почему бы не использовать grep, который будет проверять обе строки?

... grep -i "congratz\|we found" ...
...