使用 awk 在文本文件中查找最大值列表

Find a list of max values in a text file using awk

我是 awk 的新手,我不知道我正在处理的任务的正确语法。

我有一个看起来像这样的文本文件(内容总是排序但并不总是相同的,所以我不能硬编码数组的索引):

27 abc123
27 abd333
27 dce123
23 adb234
21 abc789
18 bcd213

显然最大值是 27。但是,我希望我的输出是:

27 abc123
27 abd333
27 dce123

而且不仅仅是第一行。

第二列就在那里,我的代码总是根据第一列对文本文件进行排序。

我的代码现在将最大值设置为第一个值(例如 27),并且在读取行时,它仅将具有最大值的行存储在数组中并最终打印出输出。

awk 'BEGIN {max=} {if(()==max) a[NR]=([=12=])} END {for (i in a) print a[i]}' file

您不能读取 BEGIN 块中的字段,因为它在读取文件之前执行。

要查找第一条记录,请使用模式 NR == 1NR是当前记录的编号。要查找其他记录,只需检查 </code> 是否等于最大值。</p> <pre><code>NR == 1 { max = } == max { print }

由于您的输入总是排序的,您可以通过读取所有具有最大值的记录后退出来优化此程序:

 != max { exit }