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]
相关推荐
kebidaixu10 小时前
BCU 平台 RS485 驱动适配:从 THVD1406 到 ISO3082
linux
杨浦老苏10 小时前
家庭实验室监控仪表盘HomeLab-Monitor
运维·docker·监控·群晖
回忆2012初秋11 小时前
【Nginx】原理、配置与运维实战(2)
运维·nginx·策略模式
Urbano12 小时前
工装外套全制作流程、工序痛点及自动化设备升级方案
运维·自动化
映翰通朱工12 小时前
工业4G网关无公网IP远程运维实战(内网终端异地访问方案)
运维·服务器·网络·安全·智能路由器
洪晓露12 小时前
将 rke2 集群证书延长至 10 年
运维·服务器·数据库
谢平康13 小时前
解决用 rm 报bash: /usr/bin/rm: Argument list too long错
linux·运维·运维开发
IP老炮不瞎唠13 小时前
Python 价格监控如何实现?思路与实用方法分享
运维·服务器·网络
GIS数据转换器13 小时前
城市排水生命线安全运行监测平台深度解析
java·运维·人工智能·python·安全·数据挖掘·无人机
睡不醒男孩03082314 小时前
CLup 6.x 版本中针对StarRocks 存算一体集群的完整操作手册
java·服务器·网络·clup