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]
相关推荐
GeW几秒前
新质生产力路线图Linux和数据库自主可控实践指南
linux
yunwei371 分钟前
eBPF 教程:BPF 迭代器用于内核数据导出
linux·后端·性能优化
云飞云共享云桌面11 分钟前
钣金精密机械工厂:多工程师共享图形服务器,SolidWorks/UG 三维设计兼顾成本与数据安全
运维·服务器·人工智能·自动化·制造
有味道的男人25 分钟前
搜好货平台关键词商品搜索接口:分页容错与商品数据轻量化提取方案
服务器·前端·javascript
别动我齐刘海39 分钟前
实时控制学习2
linux·c++·人工智能·学习·算法
行者-全栈开发43 分钟前
【容器/虚拟化】CVE-2026-53359:Linux KVM Januscape 虚拟机逃逸漏洞修复指南(潜伏16年的云安全噩梦)
linux·运维·服务器·多租户隔离·cve-2026-53359·kvm虚拟机逃逸·shadow mmu
专注学习44 分钟前
《深入理解Linux进程与内存》第 3 章 · 进程与线程的对比 · 重点总结
linux
杂家1 小时前
ubuntu使用指南
linux
GIFT1681 小时前
进程优先级
linux
虎头金猫1 小时前
从上传PPT到观众远程打开互动页面:Claper在CentOS 7上的Docker部署、互动组件设置与固定访问地址实战
linux·运维·网络·人工智能·docker·centos·powerpoint