如何在awk中删除具有相同的第一列和较低的第二列的行?

哈默德

我有一个包含2列的列表。在某些行中,第一列具有相同的值。在这种情况下,我要删除第二列中具有较低值的行。示例:输入:

1  10
2  20
3  15
3  5
3  35
4  20

输出:

1  10
2  20
3  35
4  20
fedorqui'停止伤害'

是的,确定:

$ awk '{a[$1]=(a[$1]<$2?$2:a[$1])} END {for (i in a) print i, a[i]}' file
1 10
2 20
3 35
4 20

只是继续a[]使用给定列1的列2的最大值填充数组。最后,打印结果。

这利用了一个事实,即值默认为0awk。但是,如果某个索引的所有值始终为负或零,则将失败。为此,我们还必须通过检查数组的特定索引是否存在来对脚本进行一些改进:

awk '{a[$1]=(($1 in a) && a[$1]>$2?a[$1]:$2)}
     END {for (i in a) print i, a[i]}' file

测试

$ cat a
1  10
2  20
3  -15
3  -5
3  -35
4  20
$ awk '{a[$1]=(($1 in a) && a[$1]>$2?a[$1]:$2)} END {for (i in a) print i, a[i]}'  a
1 10
2 20
3 -5
4 20

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

删除第一列相同的第二行中第二个具有不同日期的行中的一个

打印第一行的第一列和最后一行的第二列,其中最后一列具有相同的值

MATLAB。当第二列的行具有相同的值时,如何对第一列的所有行求和?

如何在Bootstrap中将第二行的第二列与相同的第一列或第一行对齐?

如何修改脚本以删除第一列和第二列底部的行?

如何使第二列的第二行与第一列的高度相同

如何使用awk将第一列和第二列的第一行打印为单列?

如果第一列具有相同的值,则更新第二列

如何在第一列中删除重复项并在第二列中输出值?

如何比较第一列和第二列

删除第一列或第二列中包含出现的行

如何在列表中保存未包含在具有重复值的第二列表中的第一列表的元素?

我怎样才能在 awk 中做到这一点?我有几个文件,其中有两列,第一列中的值相同。如何逐行平均第二列中的值?

如何在文件中每4行对第一列进行排序,并在第二列中使用键

如何在多索引数据框中命名第一列的第二行?现在是空白

如何在第五列中找到具有相同第二列的不同值的行?

基于第一列和第二列awk两个文件

如果第一列匹配,则提取具有第 11 列值的行位于第二个文件的第 2 和第 3 之间

第一列中第二列中所有相同字符串的值求和

如何在第二级以下的多索引数据框中删除第一列,排除一些列

AWK在特定模式之后检索文本,其中第一列和第二列与输入文件中第一列和第二列中的值匹配

如何仅选择第一行和具有相同值的多行中的特定列?

如何在一列pyspark中删除具有空值的行

如果第一列在excel中具有价值,则使第二列为必填项

如何按Excel或GSheet中第二列的值对第一列中具有相等值的列表进行排序?

如何在Matlab中使用第一列和第二列的值作为索引来获取数组中的第三列

比较 2 列;当第一列>第二列时,删除第二列

使用awk仅提取一列中具有不同字符且另一列相同的连续行

合并第一列中具有相同值的行