ログファイルがありますが、これを15分のコピーに切りたいと思います。ログファイルでは、行は次から始まります。
dd mmm yyyy hh:mm:ss,xxx
例えば
12 Feb 2013 16:05:02,xxx log text...
ファイルは1時間ごとに循環するので、ログファイルのコピーをインポートして15分分のロギングに分割して4つのログファイルを持ちたいと思います。
答え1
すべての行の形式が正しい場合
awk -F: '{print >int($2/15)*15 ".log"}' inputfile
0.log、15.log、30.log、および45.logファイルが生成されます。
コロンを区切り文字として分割する方法で動作するため、2番目のフィールドdd mm yyyy hh:mm:ss,xxx
はですmm
。これを15で除して整数部分を取り、15を掛けてmm
15時間ごとに始まる値を取得します。次に文字列を追加します".log"
。次に、awkに現在の行をファイルに印刷するように指示します。
答え2
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