【发布时间】:2021-06-13 03:05:11
【问题描述】:
我有一个大约 8,000 行的文件。我正在尝试删除第 5 列匹配的行(在本例中为 ga2016mldlzd),但仅保留第 6 列中具有最大值的行。例如,如果给出这个:
-25.559,129.8529,6674.560547,2.0,ga2016mldlzd,6
-25.5596,129.8565,6902.750651,2.0,ga2016mldlzd,7
-25.5450,129.830,969.8079427,2.0,ga2016mldlzd,8
-25.5450,129.834,57.04752604,2.0,ga2016mldlzd,9
-25.57067,129.856,7929.60612,2.0,ga2016mldlzd,10
删除除最后一行以外的所有行,最大值为 10,以获得此值。我很困惑如何在 awk 或 sed 中做到这一点?
-25.57067,129.856,7929.60612,2.0,ga2016mldlzd,10
如果尝试这样做:
awk -F, '!a[$5]++'
但我想保留最后一列,例如“10”列,而不是“6”列。谢谢
【问题讨论】:
-
您应该包含一些行,其中第 5 列不等于“ga2016mldlzd”,因此我们可以针对您的这部分要求测试潜在的解决方案。您的示例中演示的主题行中的“如果一列与另一列匹配”要求在哪里?我没有看到 2 列中的值相同的任何行。
标签: awk