比较多个文件并打印较大的值和文件名

比较多个文件并打印较大的值和文件名

我有大约 2000 个以下格式的文件:

文件:WHWH-19975612.txt

0.1   70  30
0.01  70  32
0.9   72  32
...

文件B:WHWH-20004526.txt

0.2   70 30
0.001 70 32
1.0   72 32
...

所需输出

0.2  70 30  WHWH-20004526
0.01 70 32  WHWH-19975612
1.0  72 32  WHWH-20004526
...

这样做将跟踪存在较大值的文件,我可以调用这些文件进行进一步处理。

答案1

只要文件数量适合一次调用awk,您就可以执行以下操作:

awk '{ if ($1 > maxvalues[$2" "$3]) { 
         maxvalues[$2" "$3]=$1; 
         maxfiles[$2" "$3]=FILENAME; 
       }
     } 
     END { 
       for (i in maxvalues) printf "%-4s %5s %s\n", maxvalues[i], i, maxfiles[i] 
    }' \
    *

我使用示例数据创建了一组测试文件,然后运行:

for((i=20004527;i<20006526;i++))
do 
  cp WHWH-20004526.txt WHWH-${i}.txt
done

...创建约 2000 个可供使用的数据文件。

相关内容