0

BASHでは、これを行うための良い方法を考えることはできませんが、/ var / log /messages*の過去30日間のエントリのみを表示したいと思います。私にとっての問題は、月と日だけでそれをどのように行うかです。例えば:

Sep 2 14:26:13 <SOME ENTRY>
Sep 4 14:26:13 <SOME ENTRY> 
Sep 9 14:26:13 <SOME ENTRY>
Sep 14 14:26:13 <SOME ENTRY>
etc..

何か案は ?ヘルプ!ハハ

4

3 に答える 3

1

これは近いと思います。これにより、8月の初めまでのエントリのソートされたリスト(最新のものが最初)が表示されます。いつ実行するかにもよりますが、30日ではなく最大60日かかります。平均すると約45日になると思います。もう1つの欠点はgrep、パイプの最後でステートメントを調整する必要があることです。日付が進むにつれて。

sort -k1Mr -k2nr <file> | grep -E "Aug|Sep"
于 2012-09-06T01:39:07.193 に答える
1

少し遅いけど...

    egrep "^$(date '+%b %e' -2d)" /var/log/messages
于 2016-04-05T19:15:53.000 に答える
0

-これは機能します---しかし醜い-

-各ループ反復の日付(つまり、過去X num日)に一致する検索のみを出力します

for (( i=0; i<=${MAXSEARCHDAYS}; i++)) ;do 
egrep $(date --date "now -${i} days" +%b) ${USBFOUND} | grep $(date --date "now -${i} days" +%e) >> ${TEMPFILE} 
done 
sort -k1,1M -k2,2n ${TEMPFILE} | uniq >> ${LOGFILE}
于 2012-09-25T23:00:53.507 に答える