在日期和时间戳之间提取日志(json格式)文件的Shell脚本



日志文件文件夹结构为\Mainfolder\folder1\year(2020(\month(07(\date(24(*.json。例如:\Mainfolder\folder1\2020\07\24\filename.json。.json文件每小时创建一次,如00:00:00:00:59:59json、01:00:00_01:59:59.json等等。我必须使用以下输入在.json文件下进行搜索。我目前的输入是关键字,开始日期。目前,我正在获取日期和关键字,并能够在文件中获得输出。

供您参考的当前脚本:#!/bin/bashset +xDTE=$(date "+%d-%m-%Y-v%H%m%s")Date=$1#年/月/日字符串中的Keyword=$2#关键字Start_Time=$3#hh:mmEnd_Time=$4#小时:毫米BKT=bucketpath/mainfolder/output=$(gsutil cat -h gs://bucketpath/mainfolder/"$Date"/* | egrep "$Keyword")echo $output >> $"/tmp/folder/logoutput-$DTE"gsutil cp -r /tmp/folder/logoutput-$DTE gs://bucketpath/mainfolder/

我必须添加结束日期Start_Time&End_Time并在.json文件中搜索,然后在上面的文件中获得输出。我试着用awk&sed,但我无法获得输出。有人能帮我写这个剧本吗。

提前谢谢。

我准备了以下脚本来收集日期和时间戳之间的日志以及关键字。我的日志文件是.json格式。在这里发帖的原因是,它可能会帮助那些正在寻找类似脚本的人。

#!/bin/bash
set +x
DTE=$(date "+%d-%m-%Y-v%H%m%s")
startdate=$1
enddate=$2
start_Time=$3
end_Time=$4
keyword=$5
BKT=storage/folder
i=$start_time
i1=$(sed 's/.{3}$//' <<< "$i")
j=$end_time
j1=$(sed 's/.{3}$//' <<< "$j")
curr="$startdate"
while true; do
echo "$curr"
[ "$curr" < "$enddate" ] || break
output=$(gsutil cat -h gs://storage/folder/"$curr"/"$i1:00:00_$j1:59:59*" | sed -n '/"timestamp":"[^"]*T'$i':/,/"timestamp":"[^"]*T'$j':/p' | grep "$keyword")
echo $output >> $"/tmp/folder/mylog-$DTE"
curr=$( date +%Y/%m/%d --date "$curr +1 day" )
done
gsutil cp -r /tmp/folder/mylog-$DTE gs://storage/folder/

最新更新