news 2026/6/9 19:49:56

Linux 命令:sort

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Linux 命令:sort

概述

sort命令,这个命令是文本排序的核心工具,能对文件内容或命令输出按行进行排序(字母、数字、时间等规则),还支持按指定列、自定义分隔符、去重等高级操作,是处理结构化文本、日志、数据清单的必备命令,也是joinuniq等命令的前置依赖(很多命令要求输入已排序)。

资料合集:https://pan.quark.cn/s/6fe3007c3e95https://pan.quark.cn/s/561de99256a5https://pan.quark.cn/s/985f55b13d94https://pan.quark.cn/s/d0fb20abd19a

一、基本语法

sort[选项][文件1][文件2]...
  • 无文件参数时,默认读取标准输入(可配合管道|处理其他命令输出);
  • 默认按每行的字符ASCII码值升序排序(字母A-Z、数字0-9);
  • 多文件排序时,会先拼接所有文件内容,再整体排序。

二、核心选项(按功能分类)

sort的选项覆盖排序规则、字段配置、输出控制,高频选项易记且组合性强:

选项分类选项作用实用场景
排序方向
-r--reverse降序排序(默认升序)按数字从大到小、时间从新到旧排序
-n--numeric-sort数字值排序(而非字符ASCII)排序大小、金额、行数等数字列
-h--human-numeric-sort按人类可读的数字(如1K、2M、3G)排序排序du -hls -lh的输出
-V--version-sort按版本号排序(如v1.10 > v1.9)排序软件版本、文件版本号
字段/分隔符配置(核心)
-t "字符"--field-separator=字符指定字段分隔符(默认空格/制表符)处理CSV(逗号分隔)、竖线分隔的文本
-k N--key=N指定按第N列排序(可指定列范围,如-k2,3按指定列(如用户ID、金额列)排序
-k N,M——按第N列到第M列排序多列组合排序(如先按城市、再按年龄)
-k Nn——第N列按数字排序(组合选项)列是数字时,避免按字符排序
输出控制
-u--unique排序并去重(仅保留唯一行)去重文本、统计唯一值
-o 文件--output=文件将排序结果输出到指定文件(替代重定向>排序后覆盖原文件(sort -o file file
-s--stable稳定排序(相同键值的行保持原顺序)需保留原始相对顺序的场景
-f--ignore-case忽略大小写(如A和a视为相同)字母排序时统一大小写规则

三、基础示例(快速上手)

先准备测试文件test.txt

banana Apple cherry 100 20 3 hello Hello
场景1:默认排序(ASCII码升序)
sorttest.txt

输出(数字<大写字母<小写字母,ASCII码顺序):

100 20 3 Apple Hello banana cherry hello
场景2:数字排序(-n)+ 降序(-r)
sort-n -r test.txt# 优先按数字降序,非数字行按原规则排

输出:

100 20 3 cherry hello banana Hello Apple
场景3:忽略大小写排序(-f)
sort-f test.txt

输出(A/a、H/h视为相同,按字母顺序):

100 20 3 Apple banana cherry Hello hello
场景4:排序并去重(-u)
# 新增重复行后测试echo-e"apple\nApple\napple"|sort-f -u# 输出:apple(忽略大小写+去重)

四、进阶示例(结构化文本排序,核心场景)

准备结构化文件user.csv(逗号分隔:姓名,年龄,城市,薪资):

张三,25,北京,8000 李四,30,上海,15000 王五,28,北京,10000 赵六,35,广州,12000 钱七,25,上海,9000
场景1:按指定列排序(按城市+薪资降序)
# -t ",":分隔符为逗号# -k3,3:按第3列(城市)排序# -k4nr:按第4列(薪资)数字降序sort-t","-k3,3 -k4nr user.csv

输出(先按城市字母序,同城市按薪资降序):

李四,30,上海,15000 钱七,25,上海,9000 王五,28,北京,10000 张三,25,北京,8000 赵六,35,广州,12000
场景2:处理人类可读数字(-h)
# 模拟du -h输出echo-e"100K\ndata\n2M\n1G\n500K"|sort-h

输出(按大小升序:100K < 500K < 2M < 1G):

100K 500K 2M 1G data
场景3:版本号排序(-V)
echo-e"v1.9\nv1.10\nv2.1\nv1.8.1"|sort-V

输出(按版本号自然顺序):

v1.8.1 v1.9 v1.10 v2.1
场景4:排序后覆盖原文件(-o)

直接排序并替换原文件(避免sort file > file导致文件清空):

sort-t","-k2n -o user.csv user.csv# 按年龄升序排序,结果覆盖原文件

五、关键注意事项

  1. 分隔符处理
    • 若字段分隔符是多个空格/制表符混合,无需指定-tsort默认将连续空白视为一个分隔符;
    • CSV文件若含引号(如"张三,男",25),sort无法识别,需先用sed/awk处理引号。
  2. 空行处理:默认空行排在最前面,可通过grep -v "^$"先过滤空行再排序。
  3. 稳定排序:默认排序在键值相同时,行顺序可能随机,加-s可保持原始相对顺序。
  4. 超大文件sort会自动使用临时文件,支持GB级文件排序,无需担心内存不足。
  5. 与uniq配合uniq仅能去重连续重复行,需先sortuniqsort file | uniq),等价于sort -u file

六、高频组合用法

1. 统计日志中出现次数最多的IP
# 提取IP列 → 排序 → 去重并计数 → 按次数降序grep-o"\b[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\b"access.log|sort|uniq-c|sort-nr
2. 按文件大小排序(ls -lh + sort)
ls-lh|grep-v"^total"|sort-k5h -r# -k5h:按第5列(文件大小)人类可读降序
3. 排序后关联数据(sort + join)
# 先排序两个文件,再joinsortfile1.txt -o file1_sorted.txtsortfile2.txt -o file2_sorted.txtjoinfile1_sorted.txt file2_sorted.txt

总结

sort文本排序的万能工具,核心价值是自定义规则排序文本行,日常高频用法:

  1. 基础排序:sort 文件名(升序)、sort -r 文件名(降序);
  2. 数字排序:sort -n 文件名sort -nr 文件名(数字降序);
  3. 按列排序:sort -t "分隔符" -k N 文件名
  4. 去重排序:sort -u 文件名(等价sort | uniq);
  5. 特殊排序:sort -h(人类可读数字)、sort -V(版本号)。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/8 19:58:24

C++流程控制语句:构建结构化程序的核心逻辑

C 流程控制语句&#xff1a;构建结构化程序的核心逻辑 流程控制语句是结构化编程&#xff08;Structured Programming&#xff09;的三大支柱之一&#xff08;顺序、选择、循环&#xff09;&#xff0c;它们决定了程序“下一步该执行哪一段代码”。C 继承了 C 的控制结构&…

作者头像 李华
网站建设 2026/6/8 20:12:09

基于Spring Boot和Activiti6的工作流OA系统设计与实现

基于Spring Boot和Activiti6的工作流OA系统设计与实现 基于Spring Boot和Activiti6的工作流OA系统&#xff1a;企业级应用开发的完美实践 在当今数字化时代&#xff0c;企业对于高效、安全的办公自动化系统需求日益增长。工作流OA系统作为企业信息化建设的核心组成部分&#…

作者头像 李华
网站建设 2026/6/8 18:57:05

基于Spring Boot与Vue的学习教程网站系统设计与实现

基于Spring Boot与Vue的学习教程网站系统设计与实现 基于Spring Boot与Vue的学习教程网站系统&#xff1a;毕业设计源码与论文资源详解 在当今数字化教育时代&#xff0c;在线学习平台已成为知识传播的重要渠道。对于计算机科学或软件工程专业的学生而言&#xff0c;一个功能…

作者头像 李华
网站建设 2026/6/8 20:14:47

基于Springcloud的智能社区服务系统毕业论文+PPT(附源代码+演示视频)

文章目录 一、项目简介1.1 运行视频1.2 &#x1f680; 项目技术栈1.3 ✅ 环境要求说明1.4 包含的文件列表 前台运行截图后台运行截图项目部署源码下载 一、项目简介 项目基于SpringBoot框架&#xff0c;前后端分离架构&#xff0c;后端为SpringBoot前端Vue。基于SpringCloud的…

作者头像 李华
网站建设 2026/6/9 1:58:39

学术数据魔法师:书匠策AI如何让你的教育研究“数据开口说话”

在教育研究的江湖里&#xff0c;数据是“武功秘籍”&#xff0c;分析是“内功心法”。但面对堆积如山的数据、晦涩难懂的统计术语&#xff0c;许多研究者&#xff08;尤其是学生党&#xff09;常常陷入“数据焦虑”——明明想用数据证明观点&#xff0c;却被工具卡脖子&#xf…

作者头像 李华
网站建设 2026/6/9 0:49:28

能见度监测站 10/50km

Q1&#xff1a;50km能见度监测站的核心定位是什么&#xff1f;与普通能见度监测设备有何不同&#xff1f;A&#xff1a;核心定位是“超远量程能见度精准监测终端”&#xff0c;专注解决低能见度天气下的监测盲区问题&#xff0c;适配公路、高速、机场等对能见度监测要求较高的出…

作者头像 李华