在一台装有 AIX 的机器上,PERL如果它们具有相同的 id 并且如果它们在四个小时内注册,则我需要过滤将被视为重复的记录。
我使用这个过滤器实现了这个过滤器AWK并且工作得很好,但我需要一个更快的解决方案:
# Generar lista de Duplicados
awk'开始{
FS=","
}
/好的/ {
    老[$8] = f[$8];
    f[$8] = mktime($4, $3, $2, $5, $6, $7);
    x[$8]++;
}
/OK/ && x[$8]>1 && f[$8]-old[$8]
有什么建议么?有没有办法改善环境(预加载文件或类似的东西)?
输入文件已经排序。
通过jj33建议的更正,我制作了一个新版本,对日期进行了更好的处理,但仍然保持低调以合并更多操作:
awk'开始{
    FS=",";
    秒每分钟=60;
    秒=3600;
    SECSPERDAY=86400;
    拆分(“0 31 59 90 120 151 181 212 243 273 304 334”,DAYSTOMONTH,“”);
    拆分(“0 366 731 1096 1461 1827 2192 2557 2922 3288 3653 4018 4383 4749 5114 5479 5844 6210 6575 6940 7305”,DAYSTOYEAR,“”);
}
/好的/ {
    老[$8] = f[$8];
    f[$8] = mktime($4, $3, $2, $5, $6, $7);
    x[$8]++;
}
/OK/ && x[$8]>1 && f[$8]-old[$8] 2 ) && ( ((y % 4 == 0) && (y % 100 != 0)) || (y % 400 = = 0) ) ) {
        d2m = d2m + 1;
    }
    d2y = DAYSTOYEAR[ y - 1999 ];
    返回 ss + (mm*SECSPERMINUTE) + (hh*SECSPEROUR) + (d*SECSPERDAY) + (d2m*SECSPERDAY) + (d2y*SECSPERDAY);
}
'