我试图在每列 1 的第 2 列中保留具有最高值的行,包括具有最大值的相同行,如下面所需的输出。
Data is
a 55
a 66
a 130
b 88
b 99
b 99
c 110
c 130
c 130
期望的输出是
a 130
b 99
b 99
c 130
c 130
我可以从这个网站找到很好的答案,但不完全适合当前的问题。
awk '{ max=(max>$2?max:$2); arr[$2]=(arr[$2]?arr[$2] ORS:"")$0 } END{ print arr[max] }' file
产生包含相同行的输出,但最大值来自所有行,而不是每列 1。
a 130
c 130
c 130
awk '$2>max[$1] {max[$1]=$2 ; row[$1]=$0} END{for (i in row) print row[i]}' file
输出包括每列 1 的最大值,但不包括具有最大值的相同行。
a 130
b 99
c 130
您能帮我以所需的方式修剪数据吗?甚至上面的所有代码都是从您在本站的问题和答案中获得的。感谢!!非常感谢您的提前帮助!
我过去曾使用过这种方法:
awk 'NR==FNR{if($2 > max[$1]){max[$1]=$2}; next} max[$1] == $2' test.txt test.txt
a 130
b 99
b 99
c 130
c 130
这需要您两次传入同一个文件(即 awk '...' test.txt test.txt),因此它并不理想,但希望它能提供所需的输出和实际数据。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)