我有这个记录的文件
我的文件.txt :
firstname lastname note
Ben Quick 12
Fred Free 10
Mark Marked 18
Mark Marked 20
Ben Quick 8
并想用他最大的音符打印每个独特的人
结果会是这样
firstname lastname maxNote
Ben Quick 12
Fred Free 10
Mark Marked 20
所以我有这个 awk 脚本
#!/bin/awk -f
BEGIN {
print "firstname lastname maxNote"
}
NR > 1 {
list[$1," ",$2]++
}
END {
for(l in list)
print l
}
它只打印唯一的名字+姓氏
我的问题是:如何按音符对它们进行排序并打印每行的整行?
感谢您的帮助!
最佳答案
使用 GNU awk:
awk 'NR==1{print; next}
{
note=$NF # save note from last field
NF-- # remove last field from $0
name=$0
if(a[name]<note){a[name]=note}
}
END{
for(i in a){print i,a[i]}
}' file
输出:
firstname lastname note Fred Free 10 Ben Quick 12 Mark Marked 20
参见:8 Powerful Awk Built-in Variables – FS, OFS, RS, ORS, NR, NF, FILENAME, FNR
关于unix - Linux : How to AWK to find maximums in every unique line,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67114476/