如何从文件中提取特定元素

如何从文件中提取特定元素

我有一个包含以下快照的文件

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列始终位于每行的末尾。

特殊变量NFNR分别是当前记录中的字段数和迄今为止读取的记录数。该值$NF是当前记录中最后一个字段的值。

要获取最后一列中数字最大的整行,只需对上面的代码进行一些小修改即可记住并打印相关数据:

awk 'NR > 1 && (max == "" || $NF > max) { max = $NF; line = $0 } END { print line }' file

答案2

sort通过定义关键位置来实现此功能。你可以试试这个:

sort --key=3 file

相关内容