内容を含むログファイルがあると仮定すると、次のようになりますapp.log
。
2018-08-29 07:43:17.123-0500 CDT [osb_02] [[ACTIVE] ExecuteThread: '14' for queue: 'weblogic.kernel.Default (self-tuning)'] INFO -
[OSB Tracing] Outbound request was sent.
2018-08-29 07:43:17.456-0500 CDT [osb_02] [[ACTIVE] ExecuteThread: '28' for queue: 'weblogic.kernel.Default (self-tuning)'] INFO -
[OSB Tracing] Outbound response was received.
2018-08-29 07:44:18.789-0500 CDT [osb_02] [[ACTIVE] ExecuteThread: '14' for queue: 'weblogic.kernel.Default (self-tuning)'] INFO -
[OSB Tracing] Outbound request was sent.
2018-08-29 07:44:18.779-0500 CDT [osb_02] [[ACTIVE] ExecuteThread: '28' for queue: 'weblogic.kernel.Default (self-tuning)'] INFO -
[OSB Tracing] Outbound response was received.
2018-08-29 07:45:19.433-0500 CDT [osb_02] [[ACTIVE] ExecuteThread: '14' for queue: 'weblogic.kernel.Default (self-tuning)'] INFO -
[OSB Tracing] Outbound request was sent.
2018-08-29 07:45:19.998-0500 CDT [osb_02] [[ACTIVE] ExecuteThread: '28' for queue: 'weblogic.kernel.Default (self-tuning)'] INFO -
[OSB Tracing] Outbound response was received.
2018-08-29 07:46:20.658-0500 CDT [osb_02] [[ACTIVE] ExecuteThread: '14' for queue: 'weblogic.kernel.Default (self-tuning)'] INFO -
[OSB Tracing] Outbound request was sent.
2018-08-29 07:46:20.774-0500 CDT [osb_02] [[ACTIVE] ExecuteThread: '28' for queue: 'weblogic.kernel.Default (self-tuning)'] INFO -
[OSB Tracing] Outbound response was received.
パラメータで指定したタイムスタンプ範囲間のログ行を取得したいと思います。
ログ行は、タイムスタンプで始まる1行ではありません。この行の後には、タイムスタンプが異なる次の行が表示されるまで追加情報が続きます。
したがって、私たちの例では:
2018-08-29 07:43:17.123-0500 CDT [osb_02] [[ACTIVE] ExecuteThread: '14' for queue: 'weblogic.kernel.Default (self-tuning)'] INFO -
[OSB Tracing] Outbound request was sent.
1 ログ行です。
だから私はsome command 2018-08-29 07:44:00.000 2018-08-29 07:46:00.000 app.log
返されるものを実行したいと思います。
2018-08-29 07:44:18.789-0500 CDT [osb_02] [[ACTIVE] ExecuteThread: '14' for queue: 'weblogic.kernel.Default (self-tuning)'] INFO -
[OSB Tracing] Outbound request was sent.
2018-08-29 07:44:18.779-0500 CDT [osb_02] [[ACTIVE] ExecuteThread: '28' for queue: 'weblogic.kernel.Default (self-tuning)'] INFO -
[OSB Tracing] Outbound response was received.
2018-08-29 07:45:19.433-0500 CDT [osb_02] [[ACTIVE] ExecuteThread: '14' for queue: 'weblogic.kernel.Default (self-tuning)'] INFO -
[OSB Tracing] Outbound request was sent.
2018-08-29 07:45:19.998-0500 CDT [osb_02] [[ACTIVE] ExecuteThread: '28' for queue: 'weblogic.kernel.Default (self-tuning)'] INFO -
[OSB Tracing] Outbound response was received.
また、パラメータが必ずしもログファイルに存在するわけではありません。
ベストアンサー1
sed '1,/pattern1/d;/pattern2/,$d' app.log
問題を解決しなければならない
前述のようにスクリプトで実行するには、 ~/.bashrc の関数は次のようになります。
time_log() {
pattern1=$1
pattern2=$2
file=$3
sed "1,/$pattern1/d;/$pattern2/,$d" "$file"
}
その後、次を実行できます。
time_log "2018-08-29 07:44:" "2018-08-29 07:46:" app.log
編集する:
不要な削除済みcat
最初の行を含める最も簡単な方法は、grep
実行する前に含めることですsed
。
time_log() {
pattern1=$1
pattern2=$2
file=$3
grep "$pattern1" "$file"
sed "1,/$pattern1/d;/$pattern2/,$d" "$file"
}
sed
sedの専門家が介入している場合は、これを行うより良い方法があるかもしれません。