bash:wget stdout grep“word”如果不存在grep“word2”打印word | word2

时间:2011-11-02 23:21:07

标签: bash shell grep wget

我最近遇到了一个名为pwnedlist.com的新网站,它会跟踪受感染的电子邮件帐户。

我认为尝试查询列表中的每封电子邮件对我来说是一次很好的练习。

我做了所有这些,很好,很花哨,但我的问题是我不知道一个好的方法 让stdout通过两个grep's而没有第二次为第二个字符串wget'ing。这是我到目前为止所拥有的......

    #!/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其他参数,不太好的

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

另外,我选择的切割选项看起来有点笨重/多余,有什么想法更清洁吗?使用一个命令而不是通过第二次发送它?

这是HTML:

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

感谢任何帮助,谢谢!

1 个答案:

答案 0 :(得分:2)

为什么不使用会检查两个字符串的grep?

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