当前位置:首页 > 电脑教程 > 正文

Linux排序命令实战技巧

Linux排序命令sort可对文本行排序,默认按首字符升序排列,常用参数: -n按数值大小排序, -r倒序排列, -u去除重复行。

在Linux系统中,sort命令是处理文本排序的核心工具,它能够高效地对文件内容或输入流进行排序、去重和合并操作,以下是一份详细的操作指南,结合实用场景和技巧:


基础排序操作

默认排序(按字典序)

sort file.txt  # 升序排列文件内容
cat file.txt | sort  # 通过管道排序

逆序排序

sort -r file.txt  # 降序排列

按数字大小排序

sort -n file.txt  # 处理纯数字(如 10 > 2)

去重排序

sort -u file.txt  # 合并重复行

高级列处理(表格数据排序)

指定列排序

# 按第2列数字降序排列
sort -t',' -k2,2 -nr data.csv
  • -t',':以逗号为列分隔符
  • -k2,2:只针对第2列排序
  • -nr:数字降序(n为数字排序,r为逆序)

多列混合排序

# 先按第1列字母升序,再按第3列数字降序
sort -t':' -k1,1 -k3,3nr data.txt

特殊场景处理

忽略大小写

sort -f file.txt  # 不区分大小写(A=a)

自定义排序规则

# 按月份名称排序(Jan, Feb...)
sort -M months.txt

合并多个文件

sort file1.txt file2.txt -o sorted_all.txt  # 合并后输出到文件

检查是否已排序

sort -c file.txt  # 若未排序,输出错误位置

性能优化与安全操作

大文件处理

sort --parallel=4 -S 2G huge_file.txt  # 启用4线程,分配2GB内存

避免覆盖原文件

sort file.txt -o sorted.txt  # 安全输出(不可用 > 原文件)

实用示例

示例文件 data.csv

Alice,350
Bob,200
Carol,350

目标:按第二列数字降序,同数字时按名字升序

Linux排序命令实战技巧  第1张

sort -t',' -k2nr -k1 data.csv

输出

Alice,350
Carol,350
Bob,200

注意事项

  1. 分隔符冲突含空格,建议显式用 -t 指定分隔符(如 -t' ')。
  2. 列索引规则-k2,3 表示从第2列开始到第3列结束作为排序键。
  3. 字符集问题:非ASCII字符(如中文)需设置 LC_ALL=C
    LC_ALL=C sort file.txt  # 避免语言环境干扰

引用说明参考 GNU Coreutils 官方文档及 POSIX 标准命令规范,实践环境基于 Ubuntu 22.04 LTS,更多参数详见 man sort 或访问 GNU Coreutils手册。

通过掌握这些技巧,可高效处理日志分析、数据清洗等任务,提升命令行生产力,建议通过 sort --help 查阅速查表,加深记忆。

0