awk - 如果 col2 在最后一行大于 col2 则打印
问题描述
我想使用 awk 提取列值大于最后一行的行。
像这样的样本数据
a 3
a 5
a 4
b 1
c 2
c 3
c 6
我尝试使用下面的命令,但没有奏效
awk '{if(($1!=a) || ($1==a && $2>b)){getline; print}};{a=$1;b=$2}'
预期输出:
a 3
a 5
b 1
c 2
c 3
c 6
只应删除“a 4”行,因为 4 小于最后一行 (5) 的第二列。
但我的代码的实际结果:
a 5
c 2
c 6
我该如何解决?谢谢
解决方案
这是一个:
$ awk '$1!=p1 || $2>p2; {p1=$1;p2=$2}' file
a 3
a 5
b 1
c 2
c 3
c 6
如果与上一轮相比$1
变化或$2
更大,请打印.
更多领域的通用解决方案,请参阅下面的评论。
推荐阅读
- swift - 是否可以在 Swift 中添加多个触觉来一个接一个地播放?
- node.js - 在 package.json 之外的 nodeJS 中查找未使用的模块
- node.js - 更改标签文本大小?
- php - 如何使用 Eloquent 将查询参数连接到 Laravel 范围内的查询?
- google-apps-script - GoogleSheets ApsScript ReferenceError: ADDRESS is not defined详情
- r - 加载 R 包时出错:“检查 is.data.table(DT) == TRUE
- firebase - 浏览器中的 Flutter Firebase,如何进行设置?
- javascript - 如何使用 SQL 将动态添加的输入中的数据保存到数据库表中?
- c# - 从 Firebase 检索数据以创建带有按钮的滚动视图的问题
- sql-server - 是否可以简化此 patindex 代码?