加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

linux – 如何使用以下要求对列进行排序

发布时间:2020-12-14 00:32:35 所属栏目:Linux 来源:网络整理
导读:我有3列 a 03 wa 10 xa 01 yb 20 wb 01 xc 02 wc 10 yc 12 z 预期的产出是 a 10 xb 20 wc 12 z 即我需要对第2列进行排序,但不改变第1列的顺序 然后基于第二列grep列表中最大值的行 解决方法 两种方法(选择一种你喜欢的方式): 1)排序uniq“技巧”: sort -k1
我有3列

a 03 w
a 10 x
a 01 y
b 20 w
b 01 x
c 02 w
c 10 y
c 12 z

预期的产出是

a 10 x
b 20 w
c 12 z

即我需要对第2列进行排序,但不改变第1列的顺序
然后基于第二列grep列表中最大值的行

解决方法

两种方法(选择一种你喜欢的方式):

1)排序uniq“技巧”:

sort -k1,1 -k2,2rn file | uniq -w1

> -k1,1 – 按第1阶段的第1个字段排序
> -k2,2rn – 按相反顺序对第2个字段的数字排序
> uniq -w1 – 输出行中不超过1个字符的唯一行(可以调整-w< number>)

输出:

a 10 x
b 20 w
c 12 z

2)只需使用GNU datamash工具:

datamash -Wsf -g1 max 2 <file | cut -f1-3

输出:

a   10  x
b   20  w
c   12  z

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读