sort 命令

125 阅读2分钟

sort 命令是 Linux 和 Unix 系统中用于对文本文件中的行进行排序的一个非常强大的工具。它可以按字母顺序、数字顺序、月份顺序等多种方式对文件或标准输入中的数据进行排序。以下是 sort 命令的详细介绍,包括常用选项和示例。

基本用法

sort [选项] [文件...]

常用选项

  • -b
    忽略每行前面的空白字符。
    示例:sort -b file.txt

  • -d
    按照字典顺序排序,仅考虑字母、数字和空格。
    示例:sort -d file.txt

  • -f
    忽略大小写。
    示例:sort -f file.txt

  • -g
    按照通用数值顺序排序。
    示例:sort -g file.txt

  • -i
    按照字节顺序排序,仅考虑打印字符。
    示例:sort -i file.txt

  • -M
    按照月份排序。
    示例:sort -M file.txt

  • -n
    按照数值顺序排序。
    示例:sort -n file.txt

  • -r
    逆序排序。
    示例:sort -r file.txt

  • -k
    指定排序字段。
    示例:sort -k 2 file.txt 按第二列排序。

  • -t
    指定字段分隔符。
    示例:sort -t "," -k 2 file.txt 按逗号分隔的第二列排序。

  • -u
    输出唯一的行,即去重。
    示例:sort -u file.txt

  • -o
    将排序结果写入指定文件。
    示例:sort file.txt -o sorted_file.txt

  • --parallel
    指定并行排序的线程数。
    示例:sort --parallel=4 file.txt

  • -C--check
    检查文件是否已经排序。如果已排序,则返回 0。
    示例:sort -C file.txt

  • -s
    稳定排序,保持相同键值的行的原始顺序。
    示例:sort -s file.txt

示例

  1. 按字母顺序排序

    sort file.txt
    
  2. 按数值排序

    sort -n numbers.txt
    
  3. 按月份排序

    sort -M months.txt
    
  4. 逆序排序

    sort -r file.txt
    
  5. 按第二列排序

    sort -k 2 file.txt
    
  6. 按逗号分隔的第二列排序

    sort -t "," -k 2 file.csv
    
  7. 去重并排序

    sort -u file.txt
    
  8. 将排序结果写入另一个文件

    sort file.txt -o sorted_file.txt
    
  9. 检查文件是否已排序

    sort -C file.txt
    

组合使用

sort 命令可以与其他命令组合使用,通过管道传递数据。例如:

参考:uniq 命令简介

  • uniq 结合使用

    sort file.txt | uniq
    
  • grep 结合使用

    grep "pattern" file.txt | sort
    
  • head 结合使用

    sort file.txt | head -n 10
    
  • awk 结合使用

    awk '{print $2, $1}' file.txt | sort
    

高级用法

  • 多键排序

    sort -k 2,2 -k 1,1 file.txt
    

    先按第二列排序,再按第一列排序。

  • 指定排序顺序

    sort -k 2,2n -k 1,1r file.txt
    

    第二列按数值升序排序,第一列按字母降序排序。

  • 稳定排序

    sort -s -k 1,1 file.txt
    

    对第一列进行稳定排序。

通过这些选项和示例,你可以灵活地使用 sort 命令来处理各种排序需求。如果你有特定的排序需求或遇到问题,欢迎继续提问。