3

(grep の一致) を使用して、最後の 5 分間のログをプルしようとしています

だから私はtac syslog.log | sed / date -d "5 minutes ago"

ログのすべての行がこの形式を示しています

Jun 14 14:03:58  
Jul  3 08:04:35 

だから私は本当にデータのチェックを取得したい

Jul  4 08:12
Jul  4 08:17

私はこの方法を試しましたが、KINDAは機能します(ただし、08:12から08:17までは収まります)

e=""
for (( i = 5; i >= 0; i-- ))
do
    e='-e /'`date +\%R -d "-$i min"`':/p '$e; 
done

tac /var/log/syslog.log | sed -n $e 
4

6 に答える 6

1

日付の形式がわかっている場合は、次のようにしてください。

tac syslog.log | awk '/Jul  4 08:17/,/Jul  4 08:12/ { print } /Jul 4 08:11/ {exit}'

/ .. /,/ .. /正規表現の範囲です。この範囲内のすべてを出力します。したがって/Jul 4 08:11/、5 分間のウィンドウがキャプチャされたことを意味する行が表示されるとすぐに、ファイルの閲覧を終了します。

于 2013-07-04T02:05:50.937 に答える
0

OK 最後に、今回は本当に機能しているようです (awk の代わりに SED を使用して 1 時間後に終了し、最終的にいくつかのテストを実行して動作するようになりました。

tac /var/log/syslog.log | sed -e "$( date -d '-1 hour -6 minutes' '+/^%b %e %H:/q;' 
   date -d '-1 day -6 minutes' '+/^%b %e /q;'
      date -d '-1 month -6 minutes' '+/^%b /q;'
for ((o=0;o<=5;o++)) do date -d "-$o minutes" '+/^%b %e %R:/p;'; done ; echo d)"
于 2013-11-05T01:19:11.803 に答える
0

したがって、上記の方法では実際には機能しませんでしたが、機能したと思います

これが表示されたら、{exit} に RANGE を追加しました

awk '/'"$dtnow"'/,/'"$dt6min"'/ { print } /'"$dt7min"'/,/'"$dt11min"'/ {exit}'

もう一度テストするとうまくいくようです

于 2013-10-31T23:49:56.800 に答える
0

上記のスクリプトを実行するには、次の方法でインストールできる gawk が必要です。

apt-get install gawk

また

yum install gawk
于 2015-10-30T20:53:34.760 に答える