Shell中数组中元素排序的技巧

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Jerry_1126/article/details/85268464

要将old=(4 7 1 101)里面的元素,按自然数的顺序排序,生成新的数组new=(1 4 7 101)。如果要遍历元素,借助中间变量一个个比较的方式可能比较繁琐,这里有两种比较简单达到数组重新排序。 

方法一: 借助于tr和sort命令

[root@localhost ~]# old=(4 7 1 101)
[root@localhost ~]# new=$(cat ${old[@]} | tr ' ' '\n' | sort -n)
1 4 7 101

备注: 数组中分隔符是空格,借助于tr将空格替换成换行符,再用sort命令的-n可以按自然数排序,便可达到目的。

方法二: 借助于Python命令行方式

[root@localhost ~]# old=(4 7 1 101)
[root@localhost ~]# new=$(echo ${old[@]} | python -c "print ' '.join(sorted(raw_input().split(' '), key=lambda x:int(x)))")

备注: 借助于python -c的命令行方式来出来,echo中的内容通过管道传过来,再用raw_input()接收,接下来就是用sort结合lambda的key来排序,排完序再用' '.join()来拼接,处理好再赋值给新数组new。

上面两种方法处理起来还是很有技巧。

猜你喜欢

转载自blog.csdn.net/Jerry_1126/article/details/85268464
今日推荐