
定期的に匿名化したい純粋なftpdログファイルがあります。どうすればいいですか? IPv4とIPv6アドレスを削除したいです。私はsed/awkを知りません。
ログファイルは次のとおりです。
Oct 3 19:30:39 hostname pure-ftpd: ([email protected]) [INFO] New connection from 0.0.0.0
0.0.0.0
そのIPを削除して別のIPと交換したいです。私は定期的に実行するためにスクリプトをcronに入れることを知っています。
ありがとうございます!
答え1
IPv4をお試しください:
sed 's/[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}/HELLO!/g' file
HELLO!
必要なものと交換してください。
例:
echo "Oct 3 19:30:39 hostname pure-ftpd: ([email protected]) [INFO] New connection from 0.0.0.0" | sed 's/[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}/HELLO!/g'
出力は次のとおりです。
Oct 3 19:30:39 hostname pure-ftpd: (username@HELLO!) [INFO] New connection from HELLO!
IPv6の使用すべてが見えるよりも複雑です。正しい正規表現パターンを作成するには、より多くのログファイルの例が必要です。ただし、ログ内のIPv6交換の最も簡単なパターンは次のとおりです。
sed 's/\([A-Za-z0-9]*:\)\{1,7\}[A-Za-z0-9]\{1,4\}/HELLO!/2g' file
このモードはほとんどのIPv6アドレスを置き換えますが、すべてではありません!発生するすべてを置き換えるには、より複雑なソリューションが必要です。
例:
echo "Oct 3 19:30:39 hostname pure-ftpd: (username@2001:db8:85a3:8d3:1319:8a2e:370:7348) [INFO] New connection from 2001:db8::1" | sed 's/\([A-Za-z0-9]*:\)\{1,7\}[A-Za-z0-9]\{1,4\}/HELLO!/2g'
出力は次のとおりです。
Oct 3 19:30:39 hostname pure-ftpd: (username@HELLO!) [INFO] New connection from HELLO!
IPv6 正規表現に関する同様のトピックを参照してください。