在Linux系统中,sort
命令是一个非常实用的工具,用于对文本文件或标准输入进行排序。它能够按照ASCII字符顺序对行进行排序,也可以根据指定的选项和字段进行更复杂的数据排序。以下是sort
命令的一些常用用法及其参数:
基本用法:
sort [options] [file(s)]
如果不指定文件名,默认从标准输入读取数据。
常用选项:
-o 输出文件
: 将排序结果输出到指定文件,而不是标准输出(屏幕)。-n
: 按数值顺序排序,适用于包含数字的列。-r
: 反向排序,即降序排列。-u
: 删除重复行,只保留唯一行。-f
: 忽略大小写差异,进行不区分大小写的排序。-t 分隔符
: 指定字段分隔符,例如-t ','
对逗号分隔的列进行排序。-k 列号[,列号]
: 指定要排序的列,可以是单个列号或范围,如-k3,3
表示仅按第三列排序,而-k1,2
表示先按第一列排序,如果第一列相同,则按第二列排序。
示例:
对文件
numbers.txt
中的数字进行升序排序并保存到新文件sorted_numbers.txt
中:sort -n numbers.txt -o sorted_numbers.txt
排序一个CSV文件,并按第三列排序:
sort -t ',' -k 3 file.csv
对一个文件进行排序并删除重复行:
sort -u filename.txt
不区分大小写地对文件内容进行排序:
sort -f filename.txt
多列排序举例:
假设有一个文件,每行有三列数据,你想首先根据第二列排序,然后在第二列相同时根据第三列排序:sort -t ',' -k 2,2 -k 3,3 file.csv
其他高级选项,比如支持多字节字符集(如UTF-8)的排序,可能需要加上
-- LC_ALL=C
或者使用相应的locale设置来确保正确处理非ASCII字符。