200個のログファイルの開始および終了時間

200個のログファイルの開始および終了時間

私は約200のディレクトリを持っています。各ディレクトリには1つのログファイルのみが含まれています。
ログファイルの最初の行は特定のジョブの開始時刻を指定し、最後の行はジョブの終了時刻を指定します。

ディレクトリ名をCSVファイルにエクスポートできます。各ディレクトリ内のログファイルから開始時間と終了時間を取得するのに役立ちます。

コマンド/ループを共有してください。ここに例があります。

Direcotry PS-PR-9928883838383 
log name PS-PR-9928883838383.log

ログには開始タイムスタンプと最後のタイムスタンプがあります。

  2019-08-29::22:59:13 INFO com.bns.csm.####.####AppHandlerImpl:868 [pool-1-thread-5] #### = /bns/csm/ac_data/workdir/MsgService/####/Apps/####/working/PS-PR-20190829225849147/priceReq_@@@@_PS-PR-20190829225849147_20190830.csv completion confirmation is known by below line 2019-08-29::22:59:22 INFO com.bns.csm.####24 [pool-87-thread-1] THREAD for ### extract with output location = /bns/csm/ac_data/workdir/MsgService/####/Apps/@@@@/working/PS-PR-20190829225849147/priceResponse_@@@@_PS-PR-20190829225849147_20190830.txt: End. –

答え1

次のようにしてみてください。

find . -type f -name 'PS-PR-*.log' -exec awk '
  NR==1 { printf "%s,%s,", FILENAME, $1};
  $NF == "End." {print $1}' {} +

ログデータを公開していないため、行末の内容がEnd.実際にそこにあるのか、それとも一部のコピーアンドペーストアーティファクトなのかはわかりません。上記は存在しないと仮定します。

その場合はい実際に存在する場合は、End.最後のフィールドではなく最後の2番目のフィールドにあります。したがって、以下を使用してください。

$(NF-1) == "End." {print $1}

代わりに。

関連情報