【发布时间】:2015-08-21 21:05:14
【问题描述】:
我有一个文件:
1 0.5
2 0.7
3 0.55
4 0.7
5 0.45
6 0.8
7 0.75
8 0.3
9 0.35
10 0.5
11 0.65
12 0.75
我想将文件拆分为 4 个数组,每个数组结束于下一个第 3 行,然后在每个数组的第二列中找到最大值。所以这个文件的结果是:
3 0.7
6 0.8
9 0.75
12 0.75
到目前为止,我已经设法将文件分成几份
awk 'NR%3==1{x="L"++i;}{print > x}' filename
然后在每个文件中找到最大值:
awk 'BEGIN{max=0}{if(($2)>max) max=($2)}END {print $1,max}'
但是,这会创建额外的文件,这对于本示例来说很好,但实际上原始文件包含 6500 万行,所以我会对文件的数量感到有点不知所措,我试图通过编写一个简短的脚本来避免它将结合上述两者。
我试过这个:
awk 'BEGIN {for (i=1; i<=12; i+=3) {max=0} {if(($2)>max) max=($2)}}END {print $1,max}' Filename
但它会产生一些无关紧要的东西。
如果您能帮助我,将不胜感激!
【问题讨论】: