/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