Linux CentOS grep 表現

Linux CentOS grep 表現

すべてのファイルとディレクトリ内のすべてのファイルでIPアドレスを見つけるためのgrep式を見つけようとしています。

まだgrepをマスターしていませんが、「しなければならない」と思いますか?簡単な仕事。どんなアイデアがありますか?

ベストアンサー1

一致する拡張パターンはIPv4アドレスのように見え、0.0.0.0から255.255.255.255の範囲にのみあります。

((2[0-4][0-9])|(25[0-5])|(1[0-9][0-9])|([1-9][0-9])|[0-9])\.((2[0-4][0-9])|(25[0-5])|(1[0-9][0-9])|([1-9][0-9])|[0-9])\.((2[0-4][0-9])|(25[0-5])|(1[0-9][0-9])|([1-9][0-9])|[0-9])\.((2[0-4][0-9])|(25[0-5])|(1[0-9][0-9])|([1-9][0-9])|[0-9])

この式とそれに続くすべての式にはegrep(または)を使用する必要があります。grep -E

これは1111.2.3.444と一致するため、奇妙な異常値もキャッチします111.2.3.44。 (より複雑なテストを書くことができますが、読みにくいです。)

1111.2.3.444に興味がなければ、そして999.000.011.555マッチングのようなものを気にしない限り、コメントからilkkachuが提案したより単純な正規表現はです([0-9]{1,3}\.){3}[0-9]{1,3}

すべてのディレクトリを表示するには、次のものをマージする必要がありますfind

find /var/log -type f -exec egrep '([0-9]{1,3}\.){3}[0-9]{1,3}' '{}' +

これは、シリーズ内の各ファイルで実行するのではなく、GNUfindアクションを使用して単一のコマンドラインを生成し、一致するファイルの名前を最初に印刷します(ほとんどのファイルはこれを行います)。+grepgrepgrep

IPv6アドレスを検出することはこの回答の範囲外です。

おすすめ記事