すべてのファイルとディレクトリ内のすべてのファイルで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
アクションを使用して単一のコマンドラインを生成し、一致するファイルの名前を最初に印刷します(ほとんどのファイルはこれを行います)。+
grep
grep
grep
IPv6アドレスを検出することはこの回答の範囲外です。