sort是Linux系统中用于对文本文件行进行排序的命令行工具能够按字母顺序、数值大小、日期等规则排序并可指定字段及分隔符常通过管道与其他命令组合使用是文本处理和数据分析的重要工具。一、命令语法与核心概念基本语法bashsort[选项][文件...]选项控制排序的行为如排序顺序、字段分隔符等文件要排序的输入文件可指定多个若不指定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--keyPOS1[,POS2]指定排序的字段位置-m--merge合并已排序的文件不再排序-M--month-sort按月份名称排序JAN FEB ... DEC-n--numeric-sort按数值大小排序而非字符串顺序-o--outputFILE将结果写入文件而非标准输出-r--reverse逆序输出排序结果-R--random-sort随机排序但相同键会被分组-t--field-separatorSEP指定字段分隔符默认是空白字符-u--unique去除重复行仅保留唯一行-V--version-sort对文本内的版本号进行自然排序-c--check检查输入是否已排序若已有序则不进行操作-C--checkquiet类似-c但不报告第一个无序行--parallelN指定同时运行的排序线程数-S--buffer-sizeSIZE指定主内存缓存大小-T--temporary-directoryDIR指定临时文件存放目录三、排序规则sort的排序规则受当前语言环境locale影响。在默认环境下以数字开头的行优先级最高以小写字母开头的行优先级次之按字典序比较若希望按ASCII码严格排序忽略locale影响可设置bashLC_ALLCsortfile.txt这会让大写字母排在前面。四、实用示例5.1基础排序bash#按字母顺序排序sortfruits.txt#输出apple banana grape orange#按数值排序关键不加-n会将10排在2前面sort-nnumbers.txt#输出2 10 50 100#逆序排序sort-rfruits.txt#输出orange grape banana apple#忽略大小写排序sort-fnames.txt# Alice和alice被视为相同[reference:33]5.2字段排序CSV或分隔符文件bash#按第2列年龄数值排序逗号分隔sort-t,-k2n employees.csv#示例输入John,25,male →输出John,25,male Alice,28,female Jane,30,female Bob,35,male#按第2列数值逆序排序sort-t,-k2nr employees.csv[reference:34]