当前位置: 首页 > news >正文

【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中根据行号索引得到)

http://www.mrgr.cn/news/17684.html

相关文章:

  • 数据库操作与集成:使用Python与SQLite、MySQL、PostgreSQL等数据库
  • 一步到位的任务栏优化方案,TranslucentTB让你秒变桌面达人!
  • NASA数据集:ASTER全球数字海拔模型(GTEM)V003
  • uniapp二维码生成
  • IEEE PDF eXpress 报错解决 Error in converting file + font not embedded
  • 【论文阅读】语义通信安全研究综述(2024)
  • 【安卓面试】
  • 数据结构之队列
  • 2024年Linux内核社区关于large folio和mthp的关键进展
  • 前端面试:title与h1的区别、b与strong的区别、i与em的区别?
  • 嵌入式Linux C应用编程指南-高级I/O(速记版)
  • MySQL数据库基础
  • DOM 方法:深入解析与实用指南
  • 【STM32项目设计】STM32F411健康助手--硬件SPI (硬件NSS/CS)驱动st7735--1.8寸TFT显示屏(1)
  • Red Hat 9 — Red Hat 9.4Linux系统 虚拟机安装【保姆级教程】
  • LabVIEW电机多次调用
  • MicroLEDP0.3/P0.4是全倒装COB超微小间距LED显示屏最小点间距吗
  • sort与sorted区别用法
  • 外部排序之文件归并
  • Python批量提取pdf标题-作者信息