2

セキュリティ上の理由から、ログ ファイルの 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

4 に答える 4

2

これにはfindsedを使用することをお勧めします。

ログの拡張子が「.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' {} \;

これはどのように作動しますか?

  1. 最初に、 find に/path/to/logsから始まる.log拡張子を持つファイルを再帰的に検索するように依頼します。-type fは、通常のファイルを見つけたくないことを find に伝えます。

  2. ファイルごとにsedを実行します。-i引数は、ファイルをその場で編集することを sed に伝えます。( http://www.grymoire.com/Unix/Sed.htmlをチェックしてください)

于 2013-01-10T00:56:57.523 に答える
0

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 行で入力)

于 2013-01-10T00:58:54.423 に答える
0

まず、ログを記録しているものを修正して、希望する方法でログを記録する必要があります。

戻って履歴ファイルを変更する必要がある場合は、使用を検討してください。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
于 2013-01-10T01:00:30.893 に答える
0

私はこれを使用します:

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 で作業を行います。

于 2013-01-10T01:10:39.633 に答える