Linux sort命令详解

sort 是 Linux 系统中用于对文本文件行进行排序的命令行工具,能够按字母顺序、数值大小、日期等规则排序,并可指定字段及分隔符,常通过管道与其他命令组合使用,是文本处理和数据分析的重要工具。


一、命令语法与核心概念

基本语法

bash

复制代码
sort [选项] [文件...]
  • 选项 :控制排序的行为(如排序顺序、字段分隔符等)
  • 文件 :要排序的输入文件,可指定多个;若不指定,sort 会从标准输入(stdin)读取数据

核心概念
sort 将输入的每一行视为一个记录,按照指定的规则比较各行,输出排序后的结果。它不会直接修改原文件,而是将排序后的结果输出到标准输出(终端)或通过重定向保存到文件。


二、常用选项详解

选项 长选项 描述
-b --ignore-leading-blanks 忽略每行开头的空白字符
-d --dictionary-order 仅考虑字母、数字和空格,忽略其他字符
-f --ignore-case 忽略大小写(将大写和小写视为相同)
-g --general-numeric-sort 按通用数值比较
-h --human-numeric-sort 比较人类可读数字(如 2K、1G)
-i --ignore-nonprinting 仅考虑可打印字符
-k --key=POS1[,POS2] 指定排序的字段位置
-m --merge 合并已排序的文件,不再排序
-M --month-sort 按月份名称排序(JAN < FEB < ... < DEC)
-n --numeric-sort 按数值大小排序(而非字符串顺序)
-o --output=FILE 将结果写入文件(而非标准输出)
-r --reverse 逆序输出排序结果
-R --random-sort 随机排序,但相同键会被分组
-t --field-separator=SEP 指定字段分隔符(默认是空白字符)
-u --unique 去除重复行,仅保留唯一行
-V --version-sort 对文本内的版本号进行自然排序
-c --check 检查输入是否已排序,若已有序则不进行操作
-C --check=quiet 类似 -c,但不报告第一个无序行
--parallel=N 指定同时运行的排序线程数
-S --buffer-size=SIZE 指定主内存缓存大小
-T --temporary-directory=DIR 指定临时文件存放目录

三、排序规则

sort 的排序规则受当前**语言环境(**locale 影响。在默认环境下:

  1. 以数字开头的行 优先级最高
  2. 以小写字母开头的行 优先级次之
  3. 按字典序比较

若希望按ASCII码严格排序(忽略locale影响),可设置:

bash

复制代码
LC_ALL=C sort file.txt

这会让大写字母排在前面。


四、实用示例

5.1 基础排序

bash

复制代码
#按字母顺序排序
复制代码
sort fruits.txt          #输出:apple banana grape orange
复制代码
复制代码
#按数值排序(关键:不加-n会将"10"排在"2"前面)
复制代码
sort -n numbers.txt      #输出:2 10 50 100
复制代码
复制代码
#逆序排序
复制代码
sort -r fruits.txt       #输出:orange grape banana apple
复制代码
复制代码
#忽略大小写排序
复制代码
sort -f names.txt        # 'Alice'和'alice'被视为相同\[reference:33\]
5.2 字段排序(CSV 或分隔符文件)

bash

复制代码
#按第2列(年龄)数值排序(逗号分隔)
复制代码
sort -t ',' -k 2n employees.csv
复制代码
#示例输入:John,25,male →输出:John,25,male Alice,28,female Jane,30,female Bob,35,male
复制代码
复制代码
#按第2列数值逆序排序
复制代码
sort -t ',' -k 2nr employees.csv[reference:34]
相关推荐
吳所畏惧34 分钟前
宝塔面板Redis密码修改指南:SSH命令修改 vs 面板UI界面修改,哪个更靠谱?
运维·服务器·数据库·redis·缓存·ssh
DFT计算杂谈37 分钟前
无 Root 权限在 Tesla K80 零门槛部署 DeepSeek 大模型
linux·服务器·网络·数据库·机器学习
HiDev_1 小时前
【非标自动化】2、认识元器件(确定目标)
运维·自动化
维天说2 小时前
CLI-Switch 2026年3月版历史设计:Hook、TTY 隔离与 JSON 状态
java·服务器·json
Zhang~Ling2 小时前
从 fopen 到 struct file:从零开始拆解 Linux 文件 I/O
linux·运维·服务器
DeeplyMind2 小时前
Linux 深入 per-VMA lock:Linux 缺页路径如何摆脱 mmap_lock
linux·per-vma lock
爱写代码的阿森2 小时前
鸿蒙三方库 | harmony-utils之PreferencesUtil首选项数据监听详解
服务器·华为·harmonyos·鸿蒙·huawei
爱写代码的森2 小时前
蒙三方库 | harmony-utils之FileUtil文件重命名与属性查询详解
linux·运维·服务器·华为·harmonyos·鸿蒙·huawei
中微极客2 小时前
2026主流AI Agent框架技术选型与性能对比
运维·网络·人工智能
久曲健的测试窝3 小时前
智能座舱自动化测试落地方案:数字仿真搭配实车实测,解决用例运维与场景失真难题
运维