/NAS/Target 위치에 다음 형식의 csv 파일이 있습니다.
Scorecard_Name,Path,FileName,Time_Interval_HRS
Scorecard_LDO_cust_BTS,"/NAS/data/Bank_SEN",Cust.EXT,12
Scorecard_LDO_Bank_BTS,"/NAS/data/Bank_SEN",Bank.EXT,6
이 csv 파일에는 모든 성과 기록표 작업의 세부 정보와 작업을 트리거한 파일 세부 정보가 포함되어 있습니다. 파일 확장자는 .EXT 또는 .txt일 수 있습니다.
cust.ext, Bank.ext 및 csv에 있는 다른 파일의 타임스탬프를 확인하고 정의된 간격(Interval_HRS) 필드를 기반으로 파일이 이전 파일인지 새 파일인지 확인하고 싶습니다.
또한 성과표 이름과 플래그(이전 또는 새)를 사용하여 출력을 다른 파일로 리디렉션하고 싶습니다.
저는 UNIX를 처음 접했고 현재 이를 구현하는 방법을 모색하고 있습니다. 유용한 내용이 있으면 노력한 내용을 게시하겠습니다. 도움을 주시면 감사하겠습니다!
답변1
나는 다음을 사용할 것이다 perl
:
perl -MText::CSV -le '
$csv = Text::CSV->new ({ binary => 1});
$csv->getline(STDIN); # skip input header
$csv->print(*STDOUT, ["Scorecard_Name", "Status"]);
while($row = $csv->getline(STDIN)) {
$file = "$row->[1]/$row->[2]";
$age = -M $file; # in days
if (defined($age)) {
$status = $age * 24 < $row->[3] ? "new" : "old";
} else {
$status = "unknown"; # file not there or not accessible
}
$csv->print(*STDOUT, [$row->[0], $status])
}' < /NAS/Target/file.csv > result.csv