Linux/Unix 中的 SORT 命令示例
SORT 命令用于对文件进行排序,按特定顺序排列记录。默认情况下,sort 命令假定内容为 ASCII 对文件进行排序。在 sort 命令中使用选项,它也可以用于数字排序。
- SORT 命令逐行对文本文件的内容进行排序。
- sort 是一个标准的命令行程序,它按排序顺序打印其输入的行或其参数列表中列出的所有文件的连接。
- sort 命令是用于对文本文件的行进行排序的命令行实用程序。它支持按字母顺序、相反顺序、按数字、按月排序,还可以删除重复项。
- sort 命令还可以按不在行首的项目排序,忽略大小写敏感并返回文件是否已排序。排序是根据从每一行输入中提取的一个或多个排序键完成的。
- 默认情况下,将整个输入作为排序键。空格是默认的字段分隔符。
sort 命令遵循这些特性,如下所述:
- 以数字开头的行将出现在以字母开头的行之前。
- 以字母表中较早出现的字母开头的行将出现在以字母表中较晚出现的字母开头的行之前。
- 以小写字母开头的行将出现在以大写相同字母开头的行之前。
例子
假设您创建了一个名为 file.txt 的数据文件
Command :
$ cat > file.txt
abhishek
chitransh
satish
rajan
naveen
divyam
harsh
排序文件:现在使用 sort 命令
句法 :
$ sort filename.txt
Command:
$ sort file.txt
Output :
abhishek
chitransh
divyam
harsh
naveen
rajan
satish
注意:这个命令实际上并没有改变输入文件,即file.txt。
混合文件的排序函数,即大写和小写:当我们有一个包含大写和小写字母的混合文件时,首先将小写字母与大写字母一起排序。
例子:
创建一个文件 mix.txt
Command :
$ cat > mix.txt
abc
apple
BALL
Abc
bat
现在使用排序命令
Command :
$ sort mix.txt
Output :
abc
Abc
apple
bat
BALL
带有排序函数的选项
- -o 选项: Unix 还为我们提供了特殊的功能,例如如果您想将输出写入新文件output.txt,像这样重定向输出,或者您也可以使用内置的排序选项 -o,它允许您指定输出文件。
使用 -o 选项在功能上与将输出重定向到文件相同。
注意:两者都没有比另一个优势。
示例:输入文件与上面提到的相同。
句法 :$ sort inputfile.txt > filename.txt $ sort -o filename.txt inputfile.txt
Command: $ sort file.txt > output.txt $ sort -o output.txt file.txt $ cat output.txt Output : abhishek chitransh divyam harsh naveen rajan satish
- -r 选项:逆序排序:您可以使用 -r 标志执行逆序排序。 -r 标志是 sort 命令的一个选项,它以相反的顺序对输入文件进行排序,即默认情况下是降序。
示例:输入文件与上面提到的相同。
句法 :
$ sort -r inputfile.txt
Command : $ sort -r file.txt Output : satish rajan naveen harsh divyam chitransh abhishek
- -n 选项:使用 -n 选项对文件进行数字排序。 -n 选项也在 unix 中预定义为上述选项。此选项用于对包含数字数据的文件进行排序。
例子 :
让我们考虑一个带有数字的文件:Command : $ cat > file1.txt 50 39 15 89 200
句法 :
$ sort -n filename.txt
Command : $ sort -n file1.txt Output : 15 39 50 89 200
- -nr 选项:要以相反的顺序对包含数字数据的文件进行排序,我们可以使用两个选项的组合,如下所述。
示例:数字文件与上述相同。
句法 :$ sort -nr filename.txt
Command : $ sort -nr file1.txt Output : 200 89 50 39 15
- -k 选项:Unix 提供了使用 -k 选项根据任何列号对表进行排序的功能。
使用 -k 选项对特定列进行排序。例如,使用“-k 2”对第二列进行排序。
例子 :
让我们创建一个包含 2 列的表$ cat > employee.txt manager 5000 clerk 4000 employee 6000 peon 4500 director 9000 guard 3000
句法 :
$ sort -k filename.txt
Command : $ sort -k 2n employee.txt guard 3000 clerk 4000 peon 4500 manager 5000 employee 6000 director 9000
- -c 选项:此选项用于检查给定的文件是否已排序并检查文件是否已排序通过 -c 选项进行排序。如果有乱序的行,这将写入标准输出。排序工具可用于了解此文件是否已排序以及哪些行乱序
例子 :
假设存在一个文件,其中包含一个名为cars.txt 的汽车列表。Audi Cadillac BMW Dodge
句法 :
$ sort -c filename.txt
Command : $ sort -c cars.txt Output : sort: cars.txt:3: disorder: BMW Note : If there is no output then the file is considered to be already sorted
- -u 选项:要排序和删除重复项,请传递 -u 选项进行排序。这会将排序列表写入标准输出并删除重复项。
此选项很有用,因为删除的重复项会给我们一个冗余文件。
示例:假设存在一个文件,其中包含一个名为 car.txt 的汽车列表。Audi BMW Cadillac BMW Dodge
句法 :
$ sort -u filename.txt
Command : $ sort -u cars.txt $ cat cars.txt Output : Audi BMW Cadillac Dodge
- -M 选项:按月排序,通过 -M 选项进行排序。这会将排序列表写入按月份名称排序的标准输出。
例子:
假设以下文件存在并保存为months.txt$ cat > months.txt
二月
一月
行进
八月
九月句法 :
$ sort -M filename.txt
将 -M 选项与 sort 一起使用允许我们对这个文件进行排序。Command : $ sort -M months.txt $ cat months.txt Output : January February March August September
sort命令的应用和使用
- 它可以对任何类型的文件进行排序,无论是表格文件文本文件数字文件等等。
- 可以直接实现从一个文件到另一个文件的排序,而不会妨碍当前的工作。
- 基于列对表文件的排序变得更加简单和容易。
- 有许多选项可用于以所有可能的方式进行排序。
- 最有益的用途是可以多次使用特定的数据文件,因为在提供的输入文件中没有进行任何更改。
- 原始数据始终安全且不受阻碍。