在一台装有 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); } '