You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Shell脚本技巧:如何对文本文件中的数组进行排序

用Shell脚本排序文本文件中的数字数组

没问题!这事儿用Shell自带的工具就能轻松搞定,给你两种实用的方法,完全匹配你的需求:

方法1:一行命令快速处理

如果你的文本文件里只有一行空格分隔的数字(就像你给出的示例那样),直接用这行命令就行:

tr ' ' '\n' < numbers.txt | sort -n | tr '\n' ' '

给你拆解下每个部分的作用:

  • tr ' ' '\n' < numbers.txt:把文件里的空格换成换行,让每个数字单独占一行,这样sort才能逐个处理
  • sort -n:按数值大小排序(划重点!如果不加-n,sort会按字符串字典序排,比如11会排在2前面,这可不是我们要的结果)
  • tr '\n' ' ':把排序后的换行再换回空格,还原成你要的空格分隔格式

要是想直接把排序后的结果保存到新文件,加个重定向就行:

tr ' ' '\n' < numbers.txt | sort -n | tr '\n' ' ' > sorted_numbers.txt

方法2:写成可复用的Shell脚本

如果需要反复用这个功能,不如把逻辑写成一个小脚本,方便调用:

  1. 创建一个名为sort_numbers.sh的文件,把下面的内容复制进去:
#!/bin/bash

# 先检查用户有没有传对文件名,以及文件是否存在
if [ $# -ne 1 ] || [ ! -f "$1" ]; then
    echo "用法:./sort_numbers.sh <待排序的文件名>"
    echo "示例:./sort_numbers.sh numbers.txt"
    exit 1
fi

# 执行排序逻辑,最后加个换行让输出更整洁
tr ' ' '\n' < "$1" | sort -n | tr '\n' ' '
echo
  1. 给脚本加上执行权限:
chmod +x sort_numbers.sh
  1. 使用的时候直接传入文件名就行:
./sort_numbers.sh numbers.txt

同样,要保存结果的话就加重定向:

./sort_numbers.sh numbers.txt > sorted_numbers.txt

测试验证

用你的示例输入测试:
输入文件内容:

11 23 4 9 5 2 17 25

执行命令后输出:

2 4 5 9 11 17 23 25

完全符合你想要的结果~

内容的提问来源于stack exchange,提问作者Hồ Tấn Đạt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 03:55:41