私はBASHを使用してファイル(〜/ logs / Server_Info.log)からタイムスタンプを取得するスクリプトを作成しています。特にタイムスタンプから時間を抽出して変数に記録したいと思います。
タイムスタンプに使用する形式は次のとおりです。
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つの答えが得られます。
ブランク出力
-または-
04
私のタイムスタンプは次のようなので、これは完全に間違っています。
Mar-24-2017-05:07:00 PM
ベストアンサー1
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