![如何从文件中提取特定元素](https://linux22.com/image/187621/%E5%A6%82%E4%BD%95%E4%BB%8E%E6%96%87%E4%BB%B6%E4%B8%AD%E6%8F%90%E5%8F%96%E7%89%B9%E5%AE%9A%E5%85%83%E7%B4%A0.png)
我有一个包含以下快照的文件
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