sort 命令简介

sort 命令是 Linux/Unix 系统中一个非常实用的工具,主要用于对文本文件的行进行排序。它可以根据不同的规则对文本内容进行升序或降序排列。

基本用法

最简单的用法是直接对文件进行排序并输出到标准输出:

sort filename

这会按字母顺序(默认升序)排列 filename 中的每一行。

常用选项

  • -r (或 --reverse):反向排序(降序)。
sort -r filename
  • -n (或 --numeric-sort): 按数值排序。当行中包含数字时,这个选项会按照数字的大小而不是字母顺序来排序。
sort -n filename
  • -k (或 --key): 指定排序的键(列)。你可以指定从哪一列开始排序,以及到哪一列结束。
sort -k 2 filename # 按第二列排序

你也可以指定列的范围,例如 -k 2,3 表示从第二列到第三列进行排序。

  • -u (或 --unique): 去重。只保留唯一的行,重复的行只显示一次。
sort -u filename
  • -o (或 --output): 将排序结果输出到文件
sort filename -o sorted_filename

这会将排序后的内容保存到 sorted_filename 中,而不会直接输出到屏幕。

  • -t (或 --field-separator): 指定字段分隔符。当你的数据不是以空格分隔时,可以使用此选项。
sort -t ',' -k 2 filename # 以逗号为分隔符,按第二列排序

简单示例

假设你有一个名为 data.txt 的文件,内容如下:

apple 10
banana 5
cherry 20
date 15
  • 按字母顺序排序:
sort data.txt
# 输出:
# apple 10
# banana 5
# cherry 20
# date 15
  • 按数字大小(第二列)排序:
sort -n -k 2 data.txt
# 输出:
# banana 5
# apple 10
# date 15
# cherry 20

sort 命令是处理文本数据的强大工具,熟练掌握它的常用选项能大大提高你的命令行操作效率。