Answers:
这应该工作:
awk -v max=0 '{if($1>max){want=$2; max=$1}}END{print want} ' version.log
在-v max=0
将变量max
到0
,那么,对于每一行,第一场进行比较的电流值max
。如果更大,max
则设置为第一字段的值,并want
设置为当前行。程序处理完整个文件后,将want
打印的当前值。
编辑
我没有awk
较早地测试该解决方案,提供它确实对我不利。无论如何,答案的编辑版本应该可以工作(感谢terdon的修复),我也测试了以下内容。
sort -nrk1,1 filename | head -1 | cut -d ' ' -f3
我sort
在第一个领域
现在,在排序之后,我将对输出进行管道传递,并获得第一个结果,这将使我在结果中的column1的数值达到最大值。
现在,我终于将其cut
与指定为空格的定界符进行管道连接,并打印-f3
出预期的输出。
测试中
cat filename
112030 /opt/oracle/app/oracle/product/11.2.0
121010 /opt/oracle/app/oracle/product/12.1.0
2312 /hello/some/other/path
3423232 /this/is/really/big/number
342 /ok/not/the/maximum/number
9999899 /Max/number
9767 /average/number
现在,在对上述输入运行上面的命令之后,我得到的输出为,
/Max/number
您可以使用AWK
。
$ awk '{if(max<$1){max=$1;line=$2}}END{print line}' file
/opt/oracle/app/oracle/product/12.1.0
在此,将每行的第一列与变量max
(最初为0)进行比较。如果第一列的值大于该值,max
那么第二列将存储在变量中line
,这对于文件的每一行都将继续。
在文件末尾END
执行规则以打印line
变量。
只需使用sort
命令即可对其进行排序
sort -r version.log | head -n1 | awk '{print $2}'
输出:
/opt/oracle/app/oracle/product/12.1.0
cat
,sort可以直接获取输入文件。