我想使用awk提取具有比最后一行更大的列值的行。
这样的样本数据
a 3
a 5
a 4
b 1
c 2
c 3
c 6
Run Code Online (Sandbox Code Playgroud)
我尝试使用以下命令,但没有用
awk '{if(($1!=a) || ($1==a && $2>b)){getline; print}};{a=$1;b=$2}'
Run Code Online (Sandbox Code Playgroud)
预期的输出:
a 3
a 5
b 1
c 2
c 3
c 6
Run Code Online (Sandbox Code Playgroud)
仅应删除“ a 4”行,因为4小于最后一行(5)的第二列。
但是我的代码的实际结果是:
a 5
c 2
c 6
Run Code Online (Sandbox Code Playgroud)
我该如何解决?谢谢
这是一个:
$ awk '$1!=p1 || $2>p2; {p1=$1;p2=$2}' file
a 3
a 5
b 1
c 2
c 3
c 6
Run Code Online (Sandbox Code Playgroud)
如果与上一轮相比有$1变化或$2更大,请打印。
有关更多字段的通用解决方案,请参见下面的注释。