回答編集履歴

22

テキスト修正

2018/08/18 08:19

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -16,7 +16,7 @@
16
16
 
17
17
 
18
18
 
19
- - `$16`で `326.1ms)` が取れますので、これの数値部分 `326.1`だけを取得するためには、一例として以下のようにすればよいでしょう。( [http://tpcg.io/kQR1k0](http://tpcg.io/kQR1k0) にも上げておきました。)
19
+ - `$16`で `326.1ms)` が取れますので、これの数値部分 `326.1`だけを取得するためには、一例として以下のようにすればよいでしょう。( [http://tpcg.io/kQR1k0](http://tpcg.io/kQR1k0) にも上げておきました。左上の[Execute]をクリックすると実行結果が右側に表示されます。)
20
20
 
21
21
 
22
22
 

21

テキスト修正

2018/08/18 08:19

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -1,6 +1,6 @@
1
1
  こんにちは。
2
2
 
3
-
3
+   
4
4
 
5
5
  以下、説明のため、引用元の[ブログ記事](http://blog.tnantoka.com/posts/81) に載っているログの1行目を、以下のように`LOG_LINE`という変数に入れ、ここから`326.1` を取り出す方法を考えます。
6
6
 

20

テキスト修正

2018/08/18 06:27

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -36,7 +36,7 @@
36
36
 
37
37
 
38
38
 
39
- 上記を使うとすれば、ご質問コマンドは以下にすればよいです。
39
+ 上記を使うとすれば、ご質問にある`grep`から始まるコマンドは以下にすればよいです。
40
40
 
41
41
  ```bash
42
42
 

19

テキスト修正

2018/08/18 06:27

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -2,55 +2,17 @@
2
2
 
3
3
 
4
4
 
5
- **1. sed を使う方法**
6
-
7
-
8
-
9
- `awk`を使っている部分 `sed`を使って、以下
5
+ 以下、説明のため、引用元の[ブログ記事](http://blog.tnantoka.com/posts/81) に載っているログの1行目、以下のように`LOG_LINE`という変数に入れ、ここから`326.1` 取り出す方法を考えます。
10
6
 
11
7
  ```bash
12
8
 
13
- grep "Completed 200 OK in" production.log | sed -E "s/^.*ActiveRecord: ([0-9.]+).*$/\1/" | sort -n
9
+ LOG_LINE='I, [2015-07-02T03:47:07.832647 #1439] INFO -- : Completed 200 OK in 374ms (Views: 35.2ms | ActiveRecord: 326.1ms)'
14
10
 
15
11
  ```
16
12
 
17
- のようしてみると、いかがでしょう?
13
+   
18
14
 
19
-
20
-
21
- 以下は、上記の `sed -E "s/^.*ActiveRecord: ([0-9.]+).*$/\1/"`をテストする簡単なスクリプトです。(変数`LOG_LINE` に入れているテキストは、ご質問に挙げられている[ブログ記事](http://blog.tnantoka.com/posts/81)に載っていたログの1行目です。)
22
-
23
- ```bash
24
-
25
- #!/bin/bash
26
-
27
-
28
-
29
- LOG_LINE='I, [2015-07-02T03:47:07.832647 #1439] INFO -- : Completed 200 OK in 374ms (Views: 35.2ms | ActiveRecord: 326.1ms)'
30
-
31
-
32
-
33
- echo ${LOG_LINE} | sed -E "s/^.*ActiveRecord: ([0-9.]+).*$/\1/"
34
-
35
- ```
36
-
37
-
38
-
39
- これを実行すると、`326.1`と表示されます。
40
-
41
-
42
-
43
- ※上記を実行して確認できるように、[http://tpcg.io/rh5oYc](http://tpcg.io/rh5oYc) にも上げておきました。画面左上の[Execute]ボタンをクリックすると、右側の[Result]に結果が表示されます。
44
-
45
-  
46
-
47
-  
48
-
49
- **2. awk を使う方法**
15
+ **1. awk を使う方法**
50
-
51
-
52
-
53
- 上記で書いた、サンプル行 `${LOG_LINE}`から、`326.1` を取り出す方法として `awk`を使うとすれば、以下のようになります。
54
16
 
55
17
 
56
18
 
@@ -74,7 +36,13 @@
74
36
 
75
37
 
76
38
 
39
+ 上記を使うとすれば、ご質問のコマンドは以下にすればよいです。
77
40
 
41
+ ```bash
42
+
43
+ grep "Completed 200 OK in" production.log | awk '{ print substr($16, 1, index($16, "m")-1) }' | sort -n
44
+
45
+ ```
78
46
 
79
47
 
80
48
 
@@ -93,3 +61,39 @@
93
61
  echo ${LOG_LINE} | awk '{ t=$16; sub(/ms)/, "", t); print t }'
94
62
 
95
63
  ```
64
+
65
+
66
+
67
+   
68
+
69
+ **2. sed を使う方法**
70
+
71
+
72
+
73
+ 以下のように、`ActiveRecord: `の後に続く数値部分で、テキスト全体を置き換えます。
74
+
75
+
76
+
77
+ ```bash
78
+
79
+ #!/bin/bash
80
+
81
+
82
+
83
+ LOG_LINE='I, [2015-07-02T03:47:07.832647 #1439] INFO -- : Completed 200 OK in 374ms (Views: 35.2ms | ActiveRecord: 326.1ms)'
84
+
85
+
86
+
87
+ echo ${LOG_LINE} | sed -E "s/^.*ActiveRecord: ([0-9.]+).*$/\1/"
88
+
89
+ ```
90
+
91
+
92
+
93
+ 上記を、[http://tpcg.io/rh5oYc](http://tpcg.io/rh5oYc) にも上げておきました。
94
+
95
+
96
+
97
+   
98
+
99
+ 以上、参考になれば幸いです。

18

テキスト修正

2018/08/18 06:25

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -2,7 +2,11 @@
2
2
 
3
3
 
4
4
 
5
+ **1. sed を使う方法**
6
+
7
+
8
+
5
- `awk`を使っている部分を `sed`を使うように修正して、
9
+ `awk`を使っている部分を `sed`を使て、以下
6
10
 
7
11
  ```bash
8
12
 
@@ -10,11 +14,11 @@
10
14
 
11
15
  ```
12
16
 
13
- してみると、いかがでしょう?
17
+ のようしてみると、いかがでしょう?
14
18
 
15
19
 
16
20
 
17
- 以下は、上記の `sed -E "s/^.*ActiveRecord: ([0-9.]+).*$/\1/"`をテストする簡単なスクリプトです。変数`LOG_LINE` に入れているテキストは、ご質問に挙げられている[ブログ記事](http://blog.tnantoka.com/posts/81)に載っていたログの1行目です。
21
+ 以下は、上記の `sed -E "s/^.*ActiveRecord: ([0-9.]+).*$/\1/"`をテストする簡単なスクリプトです。(変数`LOG_LINE` に入れているテキストは、ご質問に挙げられている[ブログ記事](http://blog.tnantoka.com/posts/81)に載っていたログの1行目です。)
18
22
 
19
23
  ```bash
20
24
 
@@ -38,11 +42,11 @@
38
42
 
39
43
  ※上記を実行して確認できるように、[http://tpcg.io/rh5oYc](http://tpcg.io/rh5oYc) にも上げておきました。画面左上の[Execute]ボタンをクリックすると、右側の[Result]に結果が表示されます。
40
44
 
45
+  
41
46
 
47
+  
42
48
 
43
- ---
44
-
45
- **追記**
49
+ **2. awk を使う方法**
46
50
 
47
51
 
48
52
 

17

テキスト修正

2018/08/18 06:11

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -46,7 +46,7 @@
46
46
 
47
47
 
48
48
 
49
- 上記で書いた、サンプルの1行 `${LOG_LINE}`から、`326.1` を取り出す方法として `awk`を使うとすれば、以下のようになります。
49
+ 上記で書いた、サンプル行 `${LOG_LINE}`から、`326.1` を取り出す方法として `awk`を使うとすれば、以下のようになります。
50
50
 
51
51
 
52
52
 

16

テキスト修正

2018/08/18 06:04

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -14,9 +14,7 @@
14
14
 
15
15
 
16
16
 
17
- 以下は、上記の `sed -E "s/^.*ActiveRecord: ([0-9.]+).*$/\1/"`をテストする簡単なスクリプトです。
18
-
19
- (※以下、 変数`LOG_LINE` に入れているテキストは、ご質問に挙げられている[ブログ記事](http://blog.tnantoka.com/posts/81)にったログの1行目です。
17
+ 以下上記の `sed -E "s/^.*ActiveRecord: ([0-9.]+).*$/\1/"`をテストする簡単なスクリプトです。変数`LOG_LINE` に入れているテキストは、ご質問に挙げられている[ブログ記事](http://blog.tnantoka.com/posts/81)にていたログの1行目です。
20
18
 
21
19
  ```bash
22
20
 

15

テキスト修正

2018/08/18 05:59

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -48,7 +48,11 @@
48
48
 
49
49
 
50
50
 
51
+ 上記で書いた、サンプルの1行 `${LOG_LINE}`から、`326.1` を取り出す方法として `awk`を使うとすれば、以下のようになります。
52
+
53
+
54
+
51
- - `awk`を使うとすれば、`$16`で `326.1ms)` が取れますこれの数値部分 `326.1`だけを取得するためには、一例として以下のようにすればよいでしょう。( [http://tpcg.io/kQR1k0](http://tpcg.io/kQR1k0) にも上げておきました。)
55
+ - `$16`で `326.1ms)` が取れますので、これの数値部分 `326.1`だけを取得するためには、一例として以下のようにすればよいでしょう。( [http://tpcg.io/kQR1k0](http://tpcg.io/kQR1k0) にも上げておきました。)
52
56
 
53
57
 
54
58
 

14

テキスト修正

2018/08/18 05:51

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -48,7 +48,7 @@
48
48
 
49
49
 
50
50
 
51
- `awk`を使うとすれば、`$16`で `326.1ms)` が取れます。これの数値部分 `326.1`だけを取得するためには、一例として以下のようにすればよいでしょう。
51
+ - `awk`を使うとすれば、`$16`で `326.1ms)` が取れます。これの数値部分 `326.1`だけを取得するためには、一例として以下のようにすればよいでしょう。( [http://tpcg.io/kQR1k0](http://tpcg.io/kQR1k0) にも上げておきました。)
52
52
 
53
53
 
54
54
 
@@ -68,13 +68,11 @@
68
68
 
69
69
 
70
70
 
71
- 上記を試すために、 [http://tpcg.io/kQR1k0](http://tpcg.io/kQR1k0) にも上げておきました。
72
71
 
73
72
 
74
73
 
75
- または、以下のように`sub`を使って、`ms)` を削除する(空文字列に置き換える)こともできます。
76
74
 
77
-
75
+ - または、以下のように`sub`を使って、`ms)` を削除する(空文字列に置き換える)こともできます。([http://tpcg.io/gkHQYJ](http://tpcg.io/gkHQYJ) にも上げておきました。)
78
76
 
79
77
  ```bash
80
78
 
@@ -89,5 +87,3 @@
89
87
  echo ${LOG_LINE} | awk '{ t=$16; sub(/ms)/, "", t); print t }'
90
88
 
91
89
  ```
92
-
93
- 上記を試すために、 [http://tpcg.io/gkHQYJ](http://tpcg.io/gkHQYJ) にも上げておきました。

13

テキスト修正

2018/08/18 05:28

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -89,3 +89,5 @@
89
89
  echo ${LOG_LINE} | awk '{ t=$16; sub(/ms)/, "", t); print t }'
90
90
 
91
91
  ```
92
+
93
+ 上記を試すために、 [http://tpcg.io/gkHQYJ](http://tpcg.io/gkHQYJ) にも上げておきました。

12

テキスト修正

2018/08/18 05:26

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -54,7 +54,7 @@
54
54
 
55
55
  ```bash
56
56
 
57
- #!/usr/bin/env bash
57
+ #!/bin/bash
58
58
 
59
59
 
60
60
 
@@ -69,3 +69,23 @@
69
69
 
70
70
 
71
71
  上記を試すために、 [http://tpcg.io/kQR1k0](http://tpcg.io/kQR1k0) にも上げておきました。
72
+
73
+
74
+
75
+ または、以下のように`sub`を使って、`ms)` を削除する(空文字列に置き換える)こともできます。
76
+
77
+
78
+
79
+ ```bash
80
+
81
+ #!/bin/bash
82
+
83
+
84
+
85
+ LOG_LINE='I, [2015-07-02T03:47:07.832647 #1439] INFO -- : Completed 200 OK in 374ms (Views: 35.2ms | ActiveRecord: 326.1ms)'
86
+
87
+
88
+
89
+ echo ${LOG_LINE} | awk '{ t=$16; sub(/ms)/, "", t); print t }'
90
+
91
+ ```

11

テキスト修正

2018/08/18 05:11

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -34,11 +34,11 @@
34
34
 
35
35
 
36
36
 
37
- これを実行すると、`326.1`と表示されると思います。
37
+ これを実行すると、`326.1`と表示されます。
38
38
 
39
39
 
40
40
 
41
- ※上記を実行確認できるように、[http://tpcg.io/rh5oYc](http://tpcg.io/rh5oYc) にも上げておきました。画面左上の[Execute]ボタンをクリックすると、右側の[Result]に結果が表示されます。
41
+ ※上記を実行して確認できるように、[http://tpcg.io/rh5oYc](http://tpcg.io/rh5oYc) にも上げておきました。画面左上の[Execute]ボタンをクリックすると、右側の[Result]に結果が表示されます。
42
42
 
43
43
 
44
44
 

10

テキスト修正

2018/08/18 04:49

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -68,4 +68,4 @@
68
68
 
69
69
 
70
70
 
71
- 上記のサンプルを、 [http://tpcg.io/kQR1k0](http://tpcg.io/kQR1k0) に上げておきました。
71
+ 上記を試すために、 [http://tpcg.io/kQR1k0](http://tpcg.io/kQR1k0) に上げておきました。

9

テキスト修正

2018/08/18 04:42

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -16,7 +16,7 @@
16
16
 
17
17
  以下は、上記の `sed -E "s/^.*ActiveRecord: ([0-9.]+).*$/\1/"`をテストする簡単なスクリプトです。
18
18
 
19
- (以下 `LOG_LINE` に入れているテキストは、ご質問に挙げられている[ブログ記事](http://blog.tnantoka.com/posts/81)にあったログの1行目です。)
19
+ (以下で、 変数`LOG_LINE` に入れているテキストは、ご質問に挙げられている[ブログ記事](http://blog.tnantoka.com/posts/81)にあったログの1行目です。)
20
20
 
21
21
  ```bash
22
22
 

8

テキスト修正

2018/08/18 04:38

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -16,7 +16,7 @@
16
16
 
17
17
  以下は、上記の `sed -E "s/^.*ActiveRecord: ([0-9.]+).*$/\1/"`をテストする簡単なスクリプトです。
18
18
 
19
-
19
+ (以下の `LOG_LINE` に入れているテキストは、ご質問に挙げられている[ブログ記事](http://blog.tnantoka.com/posts/81)にあったログの1行目です。)
20
20
 
21
21
  ```bash
22
22
 

7

テキスト修正

2018/08/18 04:38

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -42,4 +42,30 @@
42
42
 
43
43
 
44
44
 
45
+ ---
46
+
47
+ **追記**
48
+
49
+
50
+
51
+ `awk`を使うとすれば、`$16`で `326.1ms)` が取れます。これの数値部分 `326.1`だけを取得するためには、一例として以下のようにすればよいでしょう。
52
+
53
+
54
+
45
- 以上参考になれば幸いです。
55
+ ```bash
56
+
57
+ #!/usr/bin/env bash
58
+
59
+
60
+
61
+ LOG_LINE='I, [2015-07-02T03:47:07.832647 #1439] INFO -- : Completed 200 OK in 374ms (Views: 35.2ms | ActiveRecord: 326.1ms)'
62
+
63
+
64
+
65
+ echo ${LOG_LINE} | awk '{ print substr($16, 1, index($16, "m")-1) }'
66
+
67
+ ```
68
+
69
+
70
+
71
+ 上記のサンプルを、 [http://tpcg.io/kQR1k0](http://tpcg.io/kQR1k0) に上げておきました。

6

テキスト修正

2018/08/18 04:34

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -38,7 +38,7 @@
38
38
 
39
39
 
40
40
 
41
- ※上記と同じものを、[http://tpcg.io/rh5oYc](http://tpcg.io/rh5oYc) にも上げておきました。画面左上の[Execute]ボタンをクリックすると、右側の[Result]に結果が表示されます。
41
+ ※上記を実行確認できるように、[http://tpcg.io/rh5oYc](http://tpcg.io/rh5oYc) にも上げておきました。画面左上の[Execute]ボタンをクリックすると、右側の[Result]に結果が表示されます。
42
42
 
43
43
 
44
44
 

5

テキスト修正

2018/08/18 03:49

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -2,43 +2,7 @@
2
2
 
3
3
 
4
4
 
5
- ご質問に挙げられている、`grep`、`awk`、`sort` をパイプで連結しているコマンド
6
-
7
-
8
-
9
- ```bash
10
-
11
- grep "Completed 200 OK in" production.log | awk '{ print $11 }' | sort -n
12
-
13
- ```
14
-
15
-
16
-
17
- の中で、`awk`を使っている以下の部分
18
-
19
-
20
-
21
- ```bash
22
-
23
- awk '{ print $11 }'
5
+ `awk`を使っている部分を `sed`を使うように修正して、
24
-
25
- ```
26
-
27
-
28
-
29
- を、以下
30
-
31
-
32
-
33
- ```bash
34
-
35
- sed -E "s/^.*ActiveRecord: ([0-9.]+).*$/\1/"
36
-
37
- ```
38
-
39
-
40
-
41
- に入れ替えて
42
6
 
43
7
  ```bash
44
8
 
@@ -46,13 +10,11 @@
46
10
 
47
11
  ```
48
12
 
49
-
50
-
51
13
  としてみると、いかがでしょう?
52
14
 
53
15
 
54
16
 
55
- 上記の `sed -E "s/^.*ActiveRecord: ([0-9.]+).*$/\1/"`をテストする簡単なスクリプトが以下です。
17
+ 以下は、上記の `sed -E "s/^.*ActiveRecord: ([0-9.]+).*$/\1/"`をテストする簡単なスクリプトです。
56
18
 
57
19
 
58
20
 

4

テキスト修正

2018/08/18 03:48

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -2,7 +2,19 @@
2
2
 
3
3
 
4
4
 
5
+ ご質問に挙げられている、`grep`、`awk`、`sort` をパイプで連結しているコマンド
6
+
7
+
8
+
9
+ ```bash
10
+
11
+ grep "Completed 200 OK in" production.log | awk '{ print $11 }' | sort -n
12
+
13
+ ```
14
+
15
+
16
+
5
- `awk`を使っている以下の部分
17
+ の中で、`awk`を使っている以下の部分
6
18
 
7
19
 
8
20
 
@@ -14,7 +26,7 @@
14
26
 
15
27
 
16
28
 
17
- を、以下に入れ替えてみると、いかがでしょう?
29
+ を、以下
18
30
 
19
31
 
20
32
 
@@ -26,7 +38,21 @@
26
38
 
27
39
 
28
40
 
41
+ に入れ替えて
42
+
43
+ ```bash
44
+
45
+ grep "Completed 200 OK in" production.log | sed -E "s/^.*ActiveRecord: ([0-9.]+).*$/\1/" | sort -n
46
+
47
+ ```
48
+
49
+
50
+
29
- 上記をテストす簡単なスクリプト以下す。
51
+ としてみと、いかがでしょう?
52
+
53
+
54
+
55
+ 上記の `sed -E "s/^.*ActiveRecord: ([0-9.]+).*$/\1/"`をテストする簡単なスクリプトが以下です。
30
56
 
31
57
 
32
58
 

3

テキスト修正

2018/08/18 03:45

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -20,13 +20,13 @@
20
20
 
21
21
  ```bash
22
22
 
23
- sed -E "s/^.*ActiveRecord: ([0-9.]+)ms)$/\1/"
23
+ sed -E "s/^.*ActiveRecord: ([0-9.]+).*$/\1/"
24
24
 
25
25
  ```
26
26
 
27
27
 
28
28
 
29
- 以下は上記をテストする簡単なスクリプトです。
29
+ 上記をテストする簡単なスクリプトが以下です。
30
30
 
31
31
 
32
32
 
@@ -40,7 +40,7 @@
40
40
 
41
41
 
42
42
 
43
- echo ${LOG_LINE} | sed -E "s/^.*ActiveRecord: ([0-9.]+)ms)$/\1/"
43
+ echo ${LOG_LINE} | sed -E "s/^.*ActiveRecord: ([0-9.]+).*$/\1/"
44
44
 
45
45
  ```
46
46
 
@@ -50,7 +50,7 @@
50
50
 
51
51
 
52
52
 
53
- ※上記と同じものを、[http://tpcg.io/ztu8QH](http://tpcg.io/ztu8QH) にも上げておきました。画面左上の[Execute]ボタンをクリックすると、右側の[Result]に結果が表示されます。
53
+ ※上記と同じものを、[http://tpcg.io/rh5oYc](http://tpcg.io/rh5oYc) にも上げておきました。画面左上の[Execute]ボタンをクリックすると、右側の[Result]に結果が表示されます。
54
54
 
55
55
 
56
56
 

2

テキスト修正

2018/08/18 03:38

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -32,7 +32,7 @@
32
32
 
33
33
  ```bash
34
34
 
35
- #!/usr/bin/env bash
35
+ #!/bin/bash
36
36
 
37
37
 
38
38
 

1

テキスト修正

2018/08/18 03:31

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -50,7 +50,7 @@
50
50
 
51
51
 
52
52
 
53
- ※上記と同じものを、[http://tpcg.io/ztu8QH](http://tpcg.io/ztu8QH) にも上げておきました。[Execute]ボタンをクリックすると実行されます。
53
+ ※上記と同じものを、[http://tpcg.io/ztu8QH](http://tpcg.io/ztu8QH) にも上げておきました。画面左上の[Execute]ボタンをクリックすると、右側の[Result]に結果が表示されます。
54
54
 
55
55
 
56
56