gpt4 book ai didi

Linux 命令 : how to sort a file based on differences between columns?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:29:21 25 4
gpt4 key购买 nike

我有一个包含以下格式行的文本文件:

26 20 18 19 43 93 
3 16 6 7 47 1
19 9 14 37 22 0
25 27 14 10 62 29
19 6 10 27 33 5
24 14 15 20 21 6
10 17 15 8 47 31

有没有一种方法可以在 Linux 下使用“排序”来根据任意两列的差异对文件进行排序,例如,第 3 列和第 4 列之间的差异?

我知道排序可以根据特定的列进行,例如,

sort -r -k 3n data.csv

但不确定是否可以根据差异进行排序。

也欢迎使用其他 Linux 命令。任何脚本语言(如 Perl 或 Python)都可以轻松完成此任务,但我对 Linux 命令很好奇。

编辑:我所说的差异是指数字差异,它有一个符号。比如按照Column3-Column4排序,就是按照-1, -1, -23, 4, -17, ...排序

最佳答案

我猜您所说的“差异”是指绝对值 abs()。所以你可以这样做:

 awk '{d=$3-$4;$0=(d>0?d:-d) "#"$0}7' file|sort -n|sed 's/^.*#//'

它输出:

26 20 18 19 43 93
3 16 6 7 47 1
25 27 14 10 62 29
24 14 15 20 21 6
10 17 15 8 47 31
19 6 10 27 33 5
19 9 14 37 22 0

关于Linux 命令 : how to sort a file based on differences between columns?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19436820/

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