ログファイルがあり、15分のコピーにカットしたいと思います。ログファイルでは、次の行で始まります。
dd mmm yyyy hh:mm:ss,xxx
例えば.
12 Feb 2013 16:05:02,xxx log text...
ファイルは1時間ごとにローテーションするので、ログファイルのコピーを取り、15分のログに分割して4つのログファイルを作成します。
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
すべての行が正しくフォーマットされている場合は、
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に現在の行をそのファイルに出力するように指示します。