web-dev-qa-db-ja.com

タイムスタンプのファイルをgrepする方法は?時間の数字を探しています

ファイル(〜/ logs/Server_Info.log)からタイムスタンプを取得するBASHを使用してスクリプトを作成しています。具体的には、タイムスタンプから時間の桁を取得して変数に記録したいと思います。

これは、タイムスタンプに使用した形式です。

date +"%b-%d-%Y-%I:%M:%S %p"

そして、このスクリプトを使用してデータをプルしました。

#!/bin/bash
LAST_HOUR="$(( $(date +%I) - 1 ))"
SEARCH_STRING=$(date +"%b-%d-%Y-${LAST_HOUR}:")

timeval=$(grep "${SEARCH_STRING}" ~/logs/Server_Info.log)
echo "$timeval"

exit 0

ただし、このスクリプトを実行すると、次の2つの答えが得られます。

空白の出力

-または-

4

私のタイムスタンプは

Mar-24-2017-05:07:00 PM 
2
Nolinshun

Awkの場合、次のようになります。

$ var=$(date +"%b-%d-%Y-%I:%M:%S %p" | awk -F[-:] '{print $4}') && echo $var
04
$ var=$(date +"%b-%d-%Y-%I:%M:%S %p" | awk -F[-:] '{print $4 - 1}') && echo $var
3
1
zee

ログファイルには、2017-03-15T08:00:23.698411Z形式の日付形式が含まれています。このタイミングがUTCである2017-03-15T08:00:23.698411Z(日時は08:00:23および2017-03-15)であり、ISTで変換する必要がある場合。過去1時間は以下のコマンドを使用してください

date -d '2017-03-15T08:00:23.698411Z last hours' -u +%s

1489561223

date -d @1489561223 +"%Y/%m/%d-%H:%M:%S"

2017/03/15-07:00:23

2時間前に戻りたい場合は、「最後の時間」ではなく「2時間前」を使用します。

注:-Linuxサーバーで上記のコマンドを実行していて、LinuxサーバーのタイミングはUTCです。ISTLinuxサーバーで上記のコマンドを実行する場合は、さらに5時間30分を追加する必要があります(例:-"6時間30 「最後の時間」ではなく「数分前」)。

1
Modassir Haider