正規表現は、特定の範囲内のデータを除外するために使用されます。

正規表現は、特定の範囲内のデータを除外するために使用されます。

0〜200の範囲の最後の3桁を含む10.20.30。*形式のすべてのIPアドレスを削除し、残りのすべてのIPを新しいファイルに移動したいと思います。

除外するIPのリストをwhiteIP.txtファイルに配置し、その内容は次のとおりです。

^10.20.30.([0-1][0-9][0-9]|2[00])

私の元のファイルの内容は次のとおりです。

10.20.30.150,20
10.20.30.134,20
10.20.30.201,20
10.20.30.5,20
10.20.30.250,20
10.20.30.42,20
222.233.201.5,20
10.233.201.5,20
111.233.201.5,20

私はコマンドを試しています:

grep -vE -f whitetest.txt testIP.txt

それは私に間違った結果を与える。それは私に次の結果を与えるべきです:

10.20.30.201,20
10.20.30.250,20
222.233.201.5,20
10.233.201.5,20
111.233.201.5,20

どんなアドバイスでも大きな助けになります。

ベストアンサー1

いくつか:

.特殊文字なのでエスケープする必要があります。

^10\.20\.30\.([0-1][0-9][0-9]|2[00])

2[00]200ではなく20と一致:

^10\.20\.30\.([0-1][0-9][0-9]|200)

1桁の数字と2桁の数字を別々に処理する必要があります。

^10\.20\.30\.([0-1][0-9][0-9]|200|[0-9][^0-9]|[0-9][0-9][^0-9])

これは正しい結果を提供します。

$ grep -vE -f whitetest.txt testIP.txt
10.20.30.201 20
10.20.30.250 20
222.233.201.5 20
10.233.201.5 20
111.233.201.5 20

おすすめ記事