このような文字列から時間部分のみを抽出する方法を教えてください。 55:42.079ログからログファイルからログ時間を抽出する
[20/06/2016 15:55:42.079] <Messenger> Echo test request
は、私はちょうどこの部分15を取得したいです。
このような文字列から時間部分のみを抽出する方法を教えてください。 55:42.079ログからログファイルからログ時間を抽出する
[20/06/2016 15:55:42.079] <Messenger> Echo test request
は、私はちょうどこの部分15を取得したいです。
最も簡単な方法は、例えば、パラメータ展開とサブストリング除去である:
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
を残して、'*'
(すべて)を削除します。
質問がある場合はお知らせください。
あなたがこの試すことができます:
awk -F']| ' '{print $2}' <<< "STRING"
テスト:
$ awk -F']| ' '{print $2}' <<< "[20/06/2016 15:55:42.079] Echo test request"
15:55:42.079
これは私にとってより良いアプローチです:) + + – sjsam
sed
あまりにもあなたの友達です:
$ sed -E 's/^[^[:blank:]]*[[:blank:]]([^]]*)\].*$/\1/' 38693974
15:45:42.079
15:55:12.079
15:55:42.079
15:56:42.079
ありがとうございます... awkは便利です – simbabarry
なぜ$ 2を印刷して印刷してみませんか? – 123
@ 123:awkの部分を削除しました。なぜなら、もう1つの答えが問題を改善するからです。はい !あなたは右の 'subとprint $ 2'は私の削除された方法でうまくいったでしょう。 ;) – sjsam
も質問を投稿する際に、そのお心に留めてくださいをこれを解決するための努力をコードの形で示してみましょう。 –