本文主要是介绍【awk 】找到文件中数值最大的那一行,并输出该行的行号和内容,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
往期文章
【awk 】如何将一个文件按照同名字段进行合并?
目录
- 往期文章
- 题目
- 解答
题目
打印下边文件数字最大的行并打印行号和内容:
33 abc
12 bcd
97 def
2 hello
解答
cat test.txt | awk 'BEGIN{max=0;line=0;} {if(max<$1){max=$1;line=NR;a[NR]=$0}} END{print line, a[line]}'
解释:
- 考察awk的BEGIN,END等三个处理块,还有if判断逻辑,awk中的变量定义
BEGIN{}
块里面初始化了两个变量:max
被设置为0,用于存储找到的最大数值;line
也被设置为0,用于记录包含最大数值的行的行号- 后面紧跟着的主处理块对输入中的每一行执行。这一段表示找到最大的值并存储在max中,将最大值所在行的行号存储在line中,
NR
是awk内置变量,表示当前处理的是第几行(可以跨文件累加),并且将当前行的全部内容($0
)存储在一个数组a
中,以当前行号NR作为索引
。这样做是为了在最终输出时能够找到并打印包含最大数值的整行内容 END{}
块在awk处理完所有输入行之后执行,在这里,它打印出包含最大数值的行的行号(line)和该行的全部内容(从数组a中根据行号索引得到)
这篇关于【awk 】找到文件中数值最大的那一行,并输出该行的行号和内容的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!