2011-10-26 7 views

答えて

0

UNIX grepについて知っていますか?

ファイルに保存されているターゲット文字列のリストをgrepで他のファイルに含めることができます。

予約リストにある任意の単語に一致するyourList *の行がすべて出力されます。あなたはgrep -F reservedList ....を使用する必要がありますが、シェルスクリプト内でこれをやっている場合は、あなたがあなたの行動を条件付きにすることができます

if fgrep -f reservedList.txt yourList > /dev/null 2>&1 ; then 
    echo "found items in reserved List" 
else 
    echo "no items found in reserved List" 
fi 

。上記の最初の例を使用して動作していることを確認し、そうでない場合は、man grepに問い合わせて、OS/grepバージョンで使用する正確な引数を確認してください。

awkでこれを本当に行う必要がある場合は、基本的にawkでこの機能を作り直すことになります。

こちらがお役に立てば幸いです。

+0

また、GlennJackmanがhttp://stackoverflow.com/questions/7741700/evaluating-command-with-awkであなたに与えた答えに間違いがありますか?あなたは同じ質問を続けています。 Arg!がんばろう。 – shellter

+0

私はすべての予約済みアドレスのリストを持っていれば、あなたの解決策は良いかもしれません。しかし、私はそれを持っていません。予約されたアドレスは非常に多く、そのフォーマットは私が投稿したwikipediaページに表示されます。また、それらの中には8の倍数ではないCIDRプレフィックスがあるので、それらの正規表現を作成するのは簡単ではない – markusian

+1

私は非常に早い時期に書かれていたので、とにかく、あなたのメッセージの一番最初の文は、今までreg exprsまで言及されていない「私はip adrressesのリストを持っています。あなたが達成しようとしていること、あなたがそれをやりたい/やる必要があること、そしてあなたがそれをやりなおす必要があると思う理由についての明確な記述を書く時間を費やすことができます。(次を参照) – shellter

0

あなたは、古き良きのIPv4のリストを養う場合

while IFS=. read A B C D 
do ADDR=`printf %03d.%03d.%03d.%03d $A $B $C $D` 
    [[ 000.255.255.255 < $ADDR && $ADDR < 010.000.000.000 ]] && continue 
    [[ 010.255.255.255 < $ADDR && $ADDR < 100.064.000.000 ]] && continue 
    [[ 100.127.255.255 < $ADDR && $ADDR < 127.000.000.000 ]] && continue 
    [[ 127.255.255.255 < $ADDR && $ADDR < 169.254.000.000 ]] && continue 
    [[ 169.254.255.255 < $ADDR && $ADDR < 172.016.000.000 ]] && continue 
    [[ 172.031.255.255 < $ADDR && $ADDR < 192.000.000.000 ]] && continue 
    [[ 192.000.000.007 < $ADDR && $ADDR < 192.000.002.000 ]] && continue 
    [[ 192.000.002.255 < $ADDR && $ADDR < 192.088.099.000 ]] && continue 
    [[ 192.088.099.255 < $ADDR && $ADDR < 192.168.000.000 ]] && continue 
    [[ 192.168.255.255 < $ADDR && $ADDR < 198.018.000.000 ]] && continue 
    [[ 198.019.255.255 < $ADDR && $ADDR < 198.051.100.000 ]] && continue 
    [[ 198.051.100.255 < $ADDR && $ADDR < 203.000.113.000 ]] && continue 
    [[ 203.000.113.255 < $ADDR && $ADDR < 224.000.000.000 ]] && continue 
    echo $A.$B.$C.$D is reserved 
done 

スクリプトへの入力として行ごとに対処し、それが出力する任意の予約済みアドレス。

関連する問題