首页 > 解决方案 > 如果 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

解决方案


这是一个:

$ awk '$1!=p1 || $2>p2; {p1=$1;p2=$2}' file
a 3
a 5
b 1
c 2
c 3
c 6

如果与上一轮相比$1变化或$2更大,请打印.

更多领域的通用解决方案,请参阅下面的评论


推荐阅读