Bash 对最接近给定数字的数字进行排序

Bash 对最接近给定数字的数字进行排序,bash,Bash,如果我想要1-10范围中最接近7的数字,我希望的结果是: 7,6,8,5,9,4,10,3,2,1 我环顾四周都找不到答案,这可行吗 基本上是尝试使用一个包含一系列数字的数组,并根据目标数字对其进行排序,最接近的数字在顶部,最接近的数字在底部。在换行符上打印数字 计算目标数字与每行数字之差的绝对值 使用该计算值进行排序 删除该计算值 格式输出 seq 10 | awk -vN=7 '{print abs($1-N),$1} function abs(x) { return x < 0 ?

如果我想要1-10范围中最接近7的数字,我希望的结果是:

7,6,8,5,9,4,10,3,2,1

我环顾四周都找不到答案,这可行吗


基本上是尝试使用一个包含一系列数字的数组,并根据目标数字对其进行排序,最接近的数字在顶部,最接近的数字在底部。

在换行符上打印数字
计算目标数字与每行数字之差的绝对值
使用该计算值进行排序
删除该计算值
格式输出

seq 10 |
awk -vN=7 '{print abs($1-N),$1}  function abs(x) { return x < 0 ? -x : x; }' |
sort -n |
cut -d' ' -f2 |
paste -sd,
seq 10|
awk-vN=7'{print abs($1-N),$1}函数abs(x){返回x<0?-x:x;}'|
排序-n|
切割-d'-f2|
粘贴-sd,

在换行符上打印数字
计算目标数字与每行数字之差的绝对值
使用该计算值进行排序
删除该计算值
格式输出

seq 10 |
awk -vN=7 '{print abs($1-N),$1}  function abs(x) { return x < 0 ? -x : x; }' |
sort -n |
cut -d' ' -f2 |
paste -sd,
seq 10|
awk-vN=7'{print abs($1-N),$1}函数abs(x){返回x<0?-x:x;}'|
排序-n|
切割-d'-f2|
粘贴-sd,

您尝试过什么?以下提示:
seq 10
生成数字-然后对于每个数字,使用
awk
输出两列:数字与目标数字之差的绝对值和原始数字的第二列。因此,输出像
61
52
这样的行
07
18
29
使用简单的
awk'{print abs($1-7),$1}
脚本-然后对第一个字段上的数字进行排序-
剪切
数字-
粘贴
用逗号粘贴数字。@KamilCuk这就是我要写的答案。请将其作为一个帖子发布。@KamilCuk我尝试了一些awk建议,但我想我的部分问题是不知道如何将其放入专栏?我对awk很糟糕,抱歉。如果您愿意使用python,这样的方法也行:
vals=list(范围(1,11));VAL.sort(键=λx:(x-7)**2);打印(VAL)
您尝试过什么?以下提示:
seq 10
生成数字-然后对于每个数字,使用
awk
输出两列:数字与目标数字之差的绝对值和原始数字的第二列。因此,输出像
61
52
这样的行
07
18
29
使用简单的
awk'{print abs($1-7),$1}
脚本-然后对第一个字段上的数字进行排序-
剪切
数字-
粘贴
用逗号粘贴数字。@KamilCuk这就是我要写的答案。请将其作为一个帖子发布。@KamilCuk我尝试了一些awk建议,但我想我的部分问题是不知道如何将其放入专栏?我对awk很糟糕,抱歉。如果您愿意使用python,这样的方法也行:
vals=list(范围(1,11));VAL.sort(键=λx:(x-7)**2);打印(VAL)
注意:在
macOS上
paste
应为
paste-sd,-
。无论出于什么原因,它都是非常挑剔的。在考虑第二个数字的同时,是否也可以用这种方式对两列数字进行排序?即7,7,8,7,7,8etc@KamilCuk不过,我似乎无法让它发挥作用。我有一个数字数组,格式类似于“428217”,但我似乎根本无法将其作为一个单独的数字计入217,而是在一系列数字中同时将其输出为最接近给定的数字,如果这有意义的话?我想我在我的头顶上,然后将字段分隔符指定为逗号。默认分隔符是空白。注意:在
macOS
paste
上,应该是
paste-sd,-
。无论出于什么原因,它都是非常挑剔的。在考虑第二个数字的同时,是否也可以用这种方式对两列数字进行排序?即7,7,8,7,7,8etc@KamilCuk不过,我似乎无法让它发挥作用。我有一个数字数组,格式类似于“428217”,但我似乎根本无法将其作为一个单独的数字计入217,而是在一系列数字中同时将其输出为最接近给定的数字,如果这有意义的话?我想我在我的头顶上,然后将字段分隔符指定为逗号。默认分隔符是空白。