当前位置: 首页 > 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.xdnf.cn/news/1132759.html

相关文章:

  • [硬件电路-28]:从简单到复杂:宇宙、芯片与虚拟世界的共通逻辑
  • 快速掌握 Kafka:从核心概念到生产级部署指南
  • 网络安全初级(XSS-labs 1-8)
  • 基于Canal实现MySQL数据库数据同步
  • 数字IC后端培训教程之数字后端项目典型项目案例解析
  • 端侧推理软件栈
  • 智慧农业新图景:物联网如何精准守护作物生长​
  • FCN语义分割笔记(1)
  • XSS-labs 1-8关
  • 系统性学习C语言-第十八讲-C语言内存函数
  • 从零开始的云计算生活——番外4,使用 Keepalived 实现 MySQL 高可用
  • xss-lab1-8关
  • AWS ML Specialist 考试备考指南
  • Liunx练习项目6-创建dns服务器
  • 图机器学习(10)——监督学习中的图神经网络
  • AI Agent开发学习系列 - langchain之LCEL(1):LangChain LCEL链式编排与RAG增强实践
  • 新手向:自动化图片格式转换工具
  • orfeotoolbox ResetMargin
  • 硬件设计学习DAY3——电源Buck电路深度解析:CCM/DCM/BCM模式与电感设计
  • Linux运维新手的修炼手扎之第21天
  • 【论文阅读】A Survey on Knowledge-Oriented Retrieval-Augmented Generation(4)
  • Kotlin比较接口
  • Kotlin获取集合中的元素操作
  • 力扣-146.LRU缓存机制
  • Xsens人形机器人拟人动作AI训练,提升机器人工作精度与效率
  • MybatisPlus-11.IService的批量新增
  • 高性能架构模式——高性能缓存架构
  • alpineLinux修改包管理为国内源
  • 【Linux】基本指令详解(二) 输入\输出重定向、一切皆文件、认识管道、man、cp、mv、echo、cat
  • LVS集群搭建