나는 약 200개의 디렉토리를 가지고 있다. 각 디렉터리에는 하나의 로그 파일만 포함됩니다.
로그 파일의 첫 번째 줄은 특정 작업의 시작 시간을 지정하고 마지막 줄은 작업의 종료 시간을 지정합니다.
디렉터리 이름을 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.
마지막 필드가 아닌 끝에서 두 번째 필드에 있는 것입니다. 따라서 다음을 사용하십시오.
$(NF-1) == "End." {print $1}
대신에.