私は約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}
代わりに。