gpt4 book ai didi

linux - 根据从高到低对 Linux 文件中的字段进行排序

转载 作者:太空宇宙 更新时间:2023-11-04 12:58:24 25 4
gpt4 key购买 nike

我有一个包含 3 个字段的文件。

字段 1 有名称,字段 2 和 3 有数值。我需要根据其中存在的最高值对所有字段进行排序。

文件1.txt

ASANSOL 16.76   31.991
ASANSOL 16.72 33.687
ASANSOL 16.48 25.344
ASANSOL 16.74 30.777
BANGALORE 13.39 17.243
BANGALORE 14.34 20.852
BANGALORE 15.58 25.112
BANGALORE 14.59 34.752
BANGALORE 17.93 2.792
BHOPAL 16.53 13.487
BHOPAL 16.7 11.599
BHOPAL 16.65 16.003
BHOPAL 16.87 20.674

排序并取唯一值后,所需的输出应如下所示:

ASANSOL     16.76   33.687
BANGALORE 17.93 34.752
BHOPAL 16.87 20.674

帮帮我,我该怎么办? #脚本会更可取

最佳答案

对不起,我先回答了未问。正确答案更简单:

awk '{ d1[$1] = $2; d2[$1] = $3 } END { for(x in d1) print x, d1[x], d2[x] }' <filename>

------------ 旧答案----------------

简单的答案是:

cat <filename> | awk '{ if($2>$3) { max = $2 } else { max = $3 } print max, $0 }' | sort -r | sed 's/^[0-9.]* //'
  1. 使用 awk 找到最大数量并将其添加到每一行之前;
  2. 排序;
  3. 使用 sed 删除第一列

关于linux - 根据从高到低对 Linux 文件中的字段进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34940540/

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