web-dev-qa-db-ja.com

時間範囲でログファイルを分割する

ログファイルがあり、15分のコピーにカットしたいと思います。ログファイルでは、次の行で始まります。

dd mmm yyyy hh:mm:ss,xxx 

例えば.

12 Feb 2013 16:05:02,xxx log text...

ファイルは1時間ごとにローテーションするので、ログファイルのコピーを取り、15分のログに分割して4つのログファイルを作成します。

3
user32344

AWK:

cat input |
    awk -F ':' '{if ($2 < 15) {print $0 > "15.log"} else print}' |
    awk -F ':' '{if ($2 < 30) {print $0 > "30.log"} else print}' |
    awk -F ':' '{if ($2 < 45) {print $0 > "45.log"} else print}' |
    cat > 60.log
1
fazie

すべての行が正しくフォーマットされている場合は、

awk -F: '{print >int($2/15)*15 ".log"}' inputfile

ファイル0.log、15.log、30.log、および45.logが生成されます。

コロンを区切り文字として使用して分割することで機能するため、dd mm yyyy hh:mm:ss,xxxの2番目のフィールドはmmです。これを15で割り、整数部分を取り、15を掛けて、15分開始時にmm値を取得します。次に、文字列".log"を追加します。次に、awkに現在の行をそのファイルに出力するように指示します。

0
icarus