当前位置: 首页 > news >正文

个人笔记(linux/sort与uniq命令)

sort 命令(排序)

功能:行排序
核心语法

sort [选项] [文件]

常用选项

选项作用示例
-n数值排序sort -n
-r降序排序sort -nr
-k指定排序列sort -k2,2n
-t指定分隔符sort -t':' -k3n
-u去重(相当于 uniqsort -u

典型用法

# 按第二列数字降序排序
sort -k2,2nr data.txt# 处理CSV文件(以逗号分隔)
sort -t',' -k3n data.csv

注意事项

  • 默认按字典序排序(字母顺序,10会排在2前面)

  • 处理中文需设置 LC_ALL=C 避免编码问题


3. uniq 命令(去重统计)

功能:报告或过滤重复行
核心语法

uniq [选项] [输入文件]

关键选项

选项作用示例
-c统计出现次数uniq -c
-d只显示重复行uniq -d
-u只显示唯一行uniq -u

必须前置条件

# 必须先排序!
sort file.txt | uniq -c

示例

# 统计单词频率(错误示范)
echo -e "apple\norange\napple" | uniq -c  # 错误!输出:
# 1 apple
# 1 orange
# 1 apple# 正确做法
echo -e "apple\norange\napple" | sort | uniq -c
# 输出:
# 2 apple
# 1 orange

4. 组合排序技巧

复杂排序场景

# 按第二列数字降序,第三列字母升序
sort -k2,2nr -k3,3 data.txt# 处理带标题行的CSV(跳过第1行)
( head -1 data.csv; tail -n +2 data.csv | sort -t',' -k4n )

性能优化

# 设置本地化加速排序(处理ASCII文本)
LC_ALL=C sort file.txt

补充:

单个sort时排序方式默认按字典序排序

📌 排序规则(字母序 / 字典序)

在字母序(Lexicographical Order)下,字符串按 从左到右逐字符比较 ASCII 码 排序。规则如下:

  1. 比较第一个字符,ASCII 码小的排前面(如 'a' < 'b')。

  2. 如果第一个字符相同,比较第二个字符,以此类推。

  3. 如果所有字符都相同,较短的字符串排前面(如 "abc" < "abcd")。

  4. 字母序是逐字符比较 ASCII 码,不是按字母表顺序(但通常结果类似)。

  5. 短字符串优先(如果前面字符相同,如 "abc" < "abcd")。

  6. 大写字母排在小写字母前面(如 "A" < "a"),但你的例子全是小写,不影响。

  7. 数字字符的 ASCII 码 < 大写字母 < 小写字母(如 '0'=48,'A'=65,'a'=97)。

  8. 例子:words.txt数据

    apple
    Banana
    cat
    applepie
    123
    42
    Zebra
    apple

    运行代码

    sort words.txt

    输出

    123
    42
    Banana
    Zebra
    apple
    apple
    applepie
    cat

    text

    dffgbf
    nfdlvn
    sdfgh
    sedgg
    wedfg
    wer
    xcef
    xcvvaf

    📌 验证(用 sort 命令)

    echo -e "sdfgh\nsedgg\nwer\nwedfg\nxcef\nxcvvaf\ndffgbf\nnfdlvn" | sort

    输出

    dffgbf
    nfdlvn
    sdfgh
    sedgg
    wedfg
    wer
    xcef
    xcvvaf
http://www.dtcms.com/a/282713.html

相关文章:

  • ETL还是ELT,大数据处理怎么选更靠谱?
  • GIT : early EOF invalid index-pack output
  • Jmeter socket接口测试
  • C#——循环(while循环和do-while循环)
  • Python 与JA3 库的应用
  • 在 Linux 系统中实现 Spring Boot 程序自动启动的最佳实践
  • STM32 GPIO
  • 【深度学习】神经网络-part2
  • 架构设计之计算高性能——单体服务器高性能
  • 算法训练营DAY34 第九章 动态规划part02
  • 告别定位盲区!低成本组合导航系统ER-GNSS/MINS-05的实战能力
  • 不安全的 SSL:主机名验证功能被禁用与修复方案
  • WP Force SSL Pro – HTTPS SSL Redirect Boost Your Website‘s Trust in Minutes!
  • 使用token调用Spring OAuth2 Resource Server接口错误 insufficient_scope
  • 服务攻防-Java组件安全数据处理FastJsonJackSonXStream自动BP插件CVE漏洞
  • 多级缓存架构与热点探测系统核心技术解析
  • 2025年C++后端开发高频面试题深度解析:线程安全LRU缓存设计与实现
  • 免费MCP服务:Excel CSV 转 JSON MCP by WTSolutions 文档
  • C++:现代 C++ 编程基石,C++11核心特性解析与实践
  • 软件开发:重塑商贸物流行业格局的核心力量
  • Zabbix监控K8S的PV信息详细教程!
  • AI产品经理面试宝典第25天:AI+机器人产品设计与技术落地面试题与答法
  • Xsens人形机器人拟人动作AI训练,提升机器人工作精度与效率
  • MySQL高并发高可用架构:分库分表实战与ShardingSphere中间件应用
  • JavaScript语言 Error对象及错误处理机制 原生错误类型
  • 芯谷科技--FET偏置控制器,为卫星通信系统提供稳定偏置D8400
  • 大模型智能体(Agent)工程化:AutoGen企业级落地方案全解析
  • exports使用 package.json字段控制如何访问你的 npm 包
  • A13 GMS应用预装
  • 微服务引擎 MSE 及云原生 API 网关 2025 年 5 月产品动态