gpt4 book ai didi

linux - 根据条件删除行

转载 作者:太空宇宙 更新时间:2023-11-04 10:11:29 26 4
gpt4 key购买 nike

使用第 1 列和第 2 列作为键,我想删除所有值递增 1 的行。

输入

1000 1001 140
1000 1002 140
1000 1003 140
1000 1004 140
1000 1005 140
1000 1006 140
1000 1201 140
1000 1202 140
1000 1203 140
1000 1204 140
1000 1205 140
2000 1002 140
2000 1003 140
2000 1004 140
2000 1005 140
2000 1006 140

期望的输出

1000 1001 140
1000 1006 140
1000 1201 140
1000 1205 140
2000 1002 140
2000 1006 140

我试过了

awk '{if (a[$1] < $2)a[$1]=$2;}END{for(i in a){print i,a[i];}}' <file>

但出于某种原因,它只保留最大值。

最佳答案

您的问题陈述没有描述您的输出。您想要打印每个连续范围的第一行和最后一行。像这样:

$ awk '$1 > A || $2 > B + 1 {
if(row){print row}; print}
{A=$1; B=$2; row=$0}
END {print}' dat

1000 1001 140
1000 1006 140
1000 1201 140
1000 1205 140
2000 1002 140
2000 1006 140

基本问题只是确定一行是否只比前一行多 1。唯一的方法是让两条线进行比较。通过存储读取的每一行的值,您可以将当前行与前一行进行比较。

关于linux - 根据条件删除行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48799813/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com