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]
相关推荐
开开心心就好11 小时前
免费无广告的批量卸载与系统清理工具
linux·服务器·网络·智能手机·rabbitmq·excel·memcached
倔强的石头10611 小时前
SenseNova-U1 实战体验:从网页版生成,到 Mac 踩坑,再到 CUDA 服务器跑通本地部署
运维·服务器·macos
l167751685411 小时前
天翼云服务器失联排查完整报告_事件报告
运维·服务器·云原生·云计算
wanhengidc11 小时前
高防服务器中的数据安全
运维·服务器·网络
艾莉丝努力练剑11 小时前
【Linux网络】Linux 网络编程:HTTP(五)HTTP收尾,从Cookie会话保持、抓包问题到 HTTPS 初识
linux·运维·服务器·网络·c++
Web极客码11 小时前
在不降低图片品质的情況下优化网页性能
服务器·优化·网站
时夜_Ryan12 小时前
JumpServer堡垒机:一键部署运维安全审计
linux·运维·服务器·网络·安全·centos
华万通信king12 小时前
WorkBuddy自动化工作流:让AI定时执行任务的配置指南
运维·自动化·腾讯云·workbuddy
薛定猫AI12 小时前
【深度解析】用行为约束提升 AI Coding Agent:从 nine arm skills 看工程化智能体工作流设计
linux·运维·人工智能