📜  Linux/Unix 中的 SORT 命令示例

📅  最后修改于: 2022-05-13 01:57:29.566000             🧑  作者: Mango

Linux/Unix 中的 SORT 命令示例

SORT 命令用于对文件进行排序,按特定顺序排列记录。默认情况下,sort 命令假定内容为 ASCII 对文件进行排序。在 sort 命令中使用选项,它也可以用于数字排序。

  • SORT 命令逐行对文本文件的内容进行排序。
  • sort 是一个标准的命令行程序,它按排序顺序打印其输入的行或其参数列表中列出的所有文件的连接。
  • sort 命令是用于对文本文件的行进行排序的命令行实用程序。它支持按字母顺序、相反顺序、按数字、按月排序,还可以删除重复项。
  • sort 命令还可以按不在行首的项目排序,忽略大小写敏感并返回文件是否已排序。排序是根据从每一行输入中提取的一个或多个排序键完成的。
  • 默认情况下,将整个输入作为排序键。空格是默认的字段分隔符。

sort 命令遵循这些特性,如下所述:

  1. 以数字开头的行将出现在以字母开头的行之前。
  2. 以字母表中较早出现的字母开头的行将出现在以字母表中较晚出现的字母开头的行之前。
  3. 以小写字母开头的行将出现在以大写相同字母开头的行之前。

例子

假设您创建了一个名为 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

带有排序函数的选项

  1. -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
    
  2. -r 选项:逆序排序:您可以使用 -r 标志执行逆序排序。 -r 标志是 sort 命令的一个选项,它以相反的顺序对输入文件进行排序,即默认情况下是降序。
    示例:输入文件与上面提到的相同。
    句法 :

    $ sort -r inputfile.txt

    Command :
    $ sort -r file.txt
    Output :
    satish
    rajan
    naveen 
    harsh
    divyam
    chitransh
    abhishek
    
  3. -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
    
  4. -nr 选项:要以相反的顺序对包含数字数据的文件进行排序,我们可以使用两个选项的组合,如下所述。
    示例:数字文件与上述相同。
    句法 :
    $ sort -nr filename.txt

    Command :
    $ sort -nr file1.txt
    Output :
    200
    89
    50
    39
    15
    
  5. -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
    
  6. -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 
    
  7. -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
    
  8. -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命令的应用和使用

    1. 它可以对任何类型的文件进行排序,无论是表格文件文本文件数字文件等等。
    2. 可以直接实现从一个文件到另一个文件的排序,而不会妨碍当前的工作。
    3. 基于列对表文件的排序变得更加简单和容易。
    4. 有许多选项可用于以所有可能的方式进行排序。
    5. 最有益的用途是可以多次使用特定的数据文件,因为在提供的输入文件中没有进行任何更改。
    6. 原始数据始终安全且不受阻碍。