使用tr命令和sort命令对数组重新排序

简介: 方法一:步骤:使用tr命令将数组内每个元素之间的空格替换为换行符;之后使用sort命令按从小到大重新排序;最后使用for循环遍历排序后的元素值。通过下标值重新定义数组中的每个元素。

方法一:

步骤:

  1. 使用tr命令将数组内每个元素之间的空格替换为换行符;
  2. 之后使用sort命令按从小到大重新排序;
  3. 最后使用for循环遍历排序后的元素值。通过下标值重新定义数组中的每个元素。
[root@yuji sh]# vim paixu1.sh
 #!/bin/bash
 arr=(63 4 24 1 3 15)
 echo "原数组的顺序为:${arr[@]}"
 #将每个元素之间的空格替换为换行符,然后重新排序
 list=$(echo ${arr[@]} | tr ' ' '\n' | sort -n)
 a=0
 for i in $list
 do
    #通过下标值定义数组中的每个元素
    newarr[$a]=$i
    let a++
 done
 echo "排序后的数组顺序为:${newarr[@]}"
 [root@yuji sh]# bash p1.sh
 原数组的顺序为:63 4 24 1 3 15
 排序后的数组顺序为:1 3 4 15 24 63
复制代码


网络异常,图片无法展示
|


方法二:

for循环遍历排序后的元素值,直接定义数组中的每个元素。

[root@yuji sh]# vim p2.sh
 #!/bin/bash
 arr=(63 4 24 1 3 15)
 echo "原数组的顺序为:${arr[@]}"
 #将每个元素之间的空格替换为换行符,然后重新排序
 list=$(echo ${arr[@]} | tr ' ' '\n' | sort -n)
 for i in $list
 do
    newarr+=($i)
 done
 echo "排序后的数组顺序为:${newarr[@]}"
 [root@yuji sh]# bash p2.sh
 原数组的顺序为:63 4 24 1 3 15
 排序后的数组顺序为:1 3 4 15 24 63
复制代码


网络异常,图片无法展示
|


方法三:

先定义列表,再引用列表的值定义数组。

[root@yuji sh]# arr=(63 4 24 1 3 15)
 [root@yuji sh]# echo ${arr[@]} |tr ' ' '\n' |sort -n
 1
 3
 4
 15
 24
 63
 [root@yuji sh]# list=$(echo ${arr[@]} |tr ' ' '\n' |sort -n)
 [root@yuji sh]# echo $list
 1 3 4 15 24 63
 [root@yuji sh]# newarr=($list)
 [root@yuji sh]# echo ${newarr[@]}
 1 3 4 15 24 63
复制代码


网络异常,图片无法展示
|

方法四:

[root@yuji sh]# arr=(63 4 24 1 3 15)                           
 [root@yuji sh]# echo ${arr[@]} |tr ' ' '\n' |sort -n           1
 3
 4
 15
 24
 63
 [root@yuji sh]# new=(`echo ${arr[@]} |tr ' ' '\n' |sort -n`)
 [root@yuji sh]# echo ${new[@]}
 1 3 4 15 24 63
复制代码



网络异常,图片无法展示
|


注意事项:

使用echo输出变量值时,变量是否加双引号会影响输出的结果:

  1. 使用 echo $list 输出变量值时,会将变量值中的换行符都替换成空格。
  2. 使用 echo "$list" 输出变量值时,可正常输出变量值中的换行符。
  3. echo '$list' 只会把 $list 当成普通的字符串,因为单引号无法引用变量值。
[root@yuji sh]# echo $list
 1 3 4 15 24 63
 [root@yuji sh]# echo "$list"
 1
 3
 4
 15
 24
 63
 [root@yuji sh]# echo '$list'
 $list
复制代码


网络异常,图片无法展示
|



相关文章
|
19天前
|
数据采集 Shell Linux
【Shell 命令集合 文档编辑】Linux 字符转换或删除 tr 命令使用指南
【Shell 命令集合 文档编辑】Linux 字符转换或删除 tr 命令使用指南
39 0
|
Shell Linux
Linux中常用的文本处理命令(echo、sort、uniq、tr、cut、split、eval)(上)
1、echo命令——输出 echo 命令主要用来显示字符串信息。
330 0
常用文本内容命令(tr cut sort uniq)
常用文本内容命令(tr cut sort uniq)
|
19天前
|
Linux Perl
Linux命令之tr
Linux命令之tr
24 2
|
19天前
|
Linux
Linux命令(79)之tr
Linux命令(79)之tr
249 1
|
10月前
|
Linux Windows
一秒学会文件内容浏览,cut命令使用,uniq命令使用,sort命令,tr
一、文件内容浏览 a.cat查看/etc/passwd文件内容,且输出时带行号
223 0
|
10月前
|
Linux
10.6.4 【Linux】字符转换命令: tr, col, join, paste, expand
10.6.4 【Linux】字符转换命令: tr, col, join, paste, expand
208 0
|
Linux Shell
Linux中常用的文本处理命令(echo、sort、uniq、tr、cut、split、eval)(下)
1、echo命令——输出 echo 命令主要用来显示字符串信息。
222 0
|
Shell Linux Perl
shell编程前奏,Linux文本处理工具汇总grep、cut、sort、tee、diff、paste、tr(二)
shell编程前奏,Linux文本处理工具汇总grep、cut、sort、tee、diff、paste、tr(二)
167 0
shell编程前奏,Linux文本处理工具汇总grep、cut、sort、tee、diff、paste、tr(二)
|
Linux Shell
shell编程前奏,Linux文本处理工具汇总grep、cut、sort、tee、diff、paste、tr(一)
shell编程前奏,Linux文本处理工具汇总grep、cut、sort、tee、diff、paste、tr(一)
134 0
shell编程前奏,Linux文本处理工具汇总grep、cut、sort、tee、diff、paste、tr(一)