我有一个包含以下快照的文件
Name age class
John 12 3
Mark 10 1
Philip 15 6
列之间的分隔符是多个空格。
我想打印班级类别中最高的数字
请帮助并告诉我如何获得所需的输出。
答案1
awk 'NR > 1 && (max == "" || $NF > max) { max = $NF } END { print max }' file
这将读取您的文件,并且每当除第一行(标题行)之外的任何行的最后一个字段的数值大于之前看到的任何值时,该值都会被记住在变量中max
。如果之前没有记住任何值,那么该值也会被记住。
最后,max
打印变量 的值,它是任何行(第一行除外)最后一个字段中看到的最大值。
这假设该class
列始终位于每行的末尾。
特殊变量NF
和NR
分别是当前记录中的字段数和迄今为止读取的记录数。该值$NF
是当前记录中最后一个字段的值。
要获取最后一列中数字最大的整行,只需对上面的代码进行一些小修改即可记住并打印相关数据:
awk 'NR > 1 && (max == "" || $NF > max) { max = $NF; line = $0 } END { print line }' file
答案2
sort
通过定义关键位置来实现此功能。你可以试试这个:
sort --key=3 file