セキュリティ上の理由から、ログ ファイルの IP アドレスを非表示にする必要があります。
IP アドレスはバージョン 4 と 6 です。IPv4 の例123.4.32.16
を に置き換えx.x.x.x
、
IPv6 の例232e:23o5:te43:5423:5433:0000:ef09:23ff
を に置き換える方法でアドレスを非表示にするにはどうすればよいx:x:x:x:x:x:x:x
ですか?
単一のsed
コマンドを使用してこれを行うことは可能ですか?
4 に答える
これにはfindとsedを使用することをお勧めします。
ログの拡張子が「.log」であるとします。
find /path/to/logs -type f -name '*.log' -exec \
sed -i -e 's,[0-9]\+\(\.[0-9]\+\)\{3\},x.x.x.x,g' \
-e 's,[0-9a-f]\+\(:[0-9a-f]\+\)\{7\},x:x:x:x:x:x:x:x,gi' {} \;
これはどのように作動しますか?
最初に、 find に/path/to/logsから始まる.log拡張子を持つファイルを再帰的に検索するように依頼します。-type fは、通常のファイルを見つけたくないことを find に伝えます。
ファイルごとにsedを実行します。-i引数は、ファイルをその場で編集することを sed に伝えます。( http://www.grymoire.com/Unix/Sed.htmlをチェックしてください)
find
と を使用した 1 つのソリューションperl
:
find /the/directory -type f -exec perl -pi -e '
s/\b\d{1,3}(\.\d{1,3}){3}\b/x.x.x.x/g;
s/\b[a-f\d]{1,4}(:[a-f\d]{1,4}){7}\b/x:x:x:x:x:x:x:x/gi' {} \;
(1 行で入力)
まず、ログを記録しているものを修正して、希望する方法でログを記録する必要があります。
戻って履歴ファイルを変更する必要がある場合は、使用を検討してください。sed
sed -e 's/\b(\d{1,3}\.){3}\d{1,3}\b/x.x.x.x/' /path/to/file
sed -e 's/\b([:xdigit:]{4}:){7}[:xdigit:]{4}\b/x.x.x.x.x.x.x.x/' /path/to_file
私はこれを使用します:
find . -name "*.log" -exec grep -izl PATTERN {} \; | xargs perl -i.orig -e -n 's/PATTERN/REPLACEMENT/g'
PATTERN を挿入し、ログ ファイルの名前に応じて *.log を別のものに置き換えます。
-i.orig は、.orig の拡張子で置き換えられるファイルをバックアップします。
これは、私が試した他のものよりも比較的高速であることがわかりました。find/grep コンボを使用して候補を特定し、次に perl で作業を行います。