質問するログイン新規登録

質問編集履歴

1

コード追加

2020/06/17 12:18

投稿

ike_snj
ike_snj

スコア5

title CHANGED
File without changes
body CHANGED
@@ -1,1 +1,48 @@
1
- UTC時刻で出力されているアクセスログをJSTに読み替えて集計したいのですが、いい方法なないでしょうか。
1
+ UTC時刻で出力されているアクセスログをJSTに読み替えて集計したいのですが、いい方法なないでしょうか。
2
+
3
+ 以下のようなファイルが出力されるので、先頭の(20200501)が日付でファイル名で集計してました。
4
+ 20200501T000000.000-WstSAefuOVd4ZYO34n94.log.gz
5
+ 20200531T230000.000-WstSAefuOVd4ZYO34n94.log.gz
6
+
7
+ ```bash
8
+ #!/bin/sh
9
+
10
+ #################################################
11
+ ##File list with 50 or more access to / xyz / std ${YEAR}
12
+ #################################################
13
+
14
+ YEAR=$(date "+%Y")
15
+ MM=$1
16
+ SECONDS=0
17
+ LOGFILE="/tmp/js_`date +%Y%m%d_%H%M%S`.log"
18
+
19
+ exec > "${LOGFILE}"
20
+ exec 2>&1
21
+
22
+ if [ "$#" -ne 1 ]; then
23
+ echo "Argument error!"
24
+ exit 1
25
+ elif [[ ! "$MM" =~ [0-1][0-9] ]]; then
26
+ echo "Argument error!"
27
+ echo "Enter the month!"
28
+ exit 1
29
+ fi
30
+
31
+ test -f ${YEAR}-${MM}-${i}.json && echo "already exists ${YEAR}-${MM}-${i}.json" && exit 1
32
+
33
+ for i in 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
34
+ do
35
+ zcat "${YEAR}${MM}${i}"*.log.gz | awk -F \" '{print $8}' |
36
+ grep -E "/xyz/std/[0-9]*/[0-9]*/[0-9]*.png$" |
37
+ cut -d "?" -f 1 |cut -d "%" -f 1 |cut -d "#" -f 1 |
38
+ sort |uniq -c |awk '$1 >= 50 {print $2","$1}' > ${YEAR}-${MM}-${i}.json
39
+
40
+ sed -i -e "s/^/[\"/g" ${YEAR}-${MM}-${i}.json
41
+ sed -i -e "s/.png/.png\"/g" ${YEAR}-${MM}-${i}.json
42
+ sed -i -e "s/$/],/g" ${YEAR}-${MM}-${i}.json
43
+ sed -i -e "1i {addressPoints:[" ${YEAR}-${MM}-${i}.json
44
+ sed -i -e "$ s/],/]]}/g" ${YEAR}-${MM}-${i}.json
45
+ done
46
+
47
+ echo "[INFO] Script time is ${SECONDS}sec."
48
+ ```