2016-08-01 4 views
0

このような文字列から時間部分のみを抽出する方法を教えてください。 55:42.079ログからログファイルからログ時間を抽出する

[20/06/2016 15:55:42.079] <Messenger> Echo test request 

は、私はちょうどこの部分15を取得したいです。

+0

も質問を投稿する際に、そのお心に留めてくださいをこれを解決するための努力をコードの形で示してみましょう。 –

答えて

1

最も簡単な方法は、例えば、パラメータ展開サブストリング除去である:

var="[20/06/2016 15:55:42.079] Echo test request" 
tm=${var%]*}  ## remove all from right including ']' 
tm=${tm#* }  ## remove all from left including ' ' 
echo "time $tm" ## your time is now in $tm 

操作${var%]*}上まで、右から左へ削除するすべて'*'から作品%オペレータを利用]に達しました。その時点で文字列[20/06/2016 15:55:42.079の残りの部分には、最初から左から右に取り除く#演算子が必要です。ここでは、変数tmにだけを残して15:55:42.079を残して、'*'(すべて)を削除します。

質問がある場合はお知らせください。

3

あなたがこの試すことができます:

awk -F']| ' '{print $2}' <<< "STRING" 

テスト:

$ awk -F']| ' '{print $2}' <<< "[20/06/2016 15:55:42.079] Echo test request" 
15:55:42.079 
+1

これは私にとってより良いアプローチです:) + + – sjsam

2

sedあまりにもあなたの友達です:

$ sed -E 's/^[^[:blank:]]*[[:blank:]]([^]]*)\].*$/\1/' 38693974 
15:45:42.079 
15:55:12.079 
15:55:42.079 
15:56:42.079 
+2

ありがとうございます... awkは便利です – simbabarry

+1

なぜ$ 2を印刷して印刷してみませんか? – 123

+0

@ 123:awkの部分を削除しました。なぜなら、もう1つの答えが問題を改善するからです。はい !あなたは右の 'subとprint $ 2'は私の削除された方法でうまくいったでしょう。 ;) – sjsam

関連する問題