昨日の日付に基づいてgrepする必要があるログファイルがあります。昨日の日付を取得する方法。
ログファイルのタイムスタンプ形式は次のとおりです。
Wed Sep 23
2桁の数字についてWed Dec 1
一桁
私はdate
GNUではなくHP / UXを使用していますdate
。
答え1
Perlが使えることを願っています
$ dt=`perl -e 'print substr(scalar localtime(time-86400),0,10)'`
$ echo "$dt"
Sat Dec 5
$ grep "$dt" <logfile>
perl
上記のコードは、time
epochが返されてからの現在の時間(秒単位)です。昨日を取得するには、86400秒を除いて、人間が読める形式でスカラーで印刷します。昨日の形式だけが欲しいと仮定するので、DAY MON DT
時間に関係なく今日のすべての行を一致させるようにgrepできます。必須フィールドのみを取得するには、substr
最初の10文字を印刷してdt
変数に保存します。この変数を一緒に使用できますgrep
。
答え2
あなたの質問は不都合に表現されていますが、私が収集した内容によると、あなたは次のことを探しています。
date --date="-1 day" +"%a %b %-d"
これにより、昨日の日付がログファイルの断片に提供されたのと同じ形式で提供されます。次のようにして変数に保存できます。
yesterday=$(date --date="-1 day" +"%a %b %-d")
または grep するには、次のようにします。
yesterday=$(date --date="-1 day" +"%a %b %-d") ; grep "$yesterday" <file name>
私はあなたの質問に答えることができることを願っています