<返回更多

Linux中10大常用命令之sort使用案例

2020-05-11    
加入收藏

1. 前言

linux中的sort命令用于对文本文件的内容进行排序。本教程向您展示了sort命令的一些基本示例。

Linux中的sort命令sort命令以有用的方式排列文本行。这个简单的工具可以帮助您快速地从命令行对信息进行排序。

语法:

sort [options] <filename>

你应该注意几件事:

当您使用没有任何选项的排序时,将强制执行默认规则。它有助于理解默认规则以避免意外结果。在使用sort时,原始文件和数据是安全的。输入的结果只显示在命令行上。但是,也可以根据具体需求,将输出结果指定保存为单独的文件。稍后再详细介绍。sort最初设计用于ASCII字符。我没有对大量不同编码进行测试,但是不同的编码可能会产生意想不到的结果。

Linux中10大常用命令之sort使用案例

Linux中10大常用命令之sort使用案例

 

2. `sort`命令使用案例

Linux中10大常用命令之sort使用案例

sort命令使用案例

 

sort命令中的默认规则这些是使用sort命令时的默认规则。前几个例子将说明如何管理这些优先级。然后,我们将查看特定选项。

2.1 `sort`命令使用规则

让我向您展示一些排序命令的例子,您可以在各种情况下使用它们。

  1. 按字母顺序排序
    默认的排序命令可以方便地按字母顺序查看信息。不需要任何选项,即使大小写字母混合的情况下,A-Z排序也可以按预期工作。

我将使用一个名为filename.txt的示例文本文件,如果您查看该文件的内容,您将看到以下内容:

MX Linux
Manjaro
Mint
elementary
Ubuntu
sort filename.txt

以下是按字母顺序排列的输出结果:

elementary
Manjaro
Mint
MX Linux
Ubuntu
Linux中10大常用命令之sort使用案例

Linux使用sort命令对文本内容进行排序

 

2.2 按数值排序[选项-n]

让我们使用上一个例子中使用的列表,并按数字顺序排序。如果你想知道,根据distrowatch.com网站,该榜单反映了最受欢迎的Linux发行版(2019年7月)。

我将修改文件的内容,使项目编号,但顺序如下所示。

1. MX Linux
4. elementary
2. Manjaro
5. Ubuntu
3. Mint
sort filename.txt

排序后得到:

1. MX Linux
2. Manjaro
3. Mint
4. elementary
5. Ubuntu

看起来不错。但是,您能依靠这种方法来准确地排列数据吗?可能不会。让我们看另一个例子来找出原因。

这是我的新建的演示文本:

1
5
10
3
5
2
60
23
432
21

现在,如果我使用sort命令没有任何选项,这是我得到的:

sort order.txt
1
10
2
21
23
3
432
5
5
60

注意:数字仅按其开头(第一个字符)的数字排序。

当您添加-n选项时,现在正在计算字符串的数值,而不仅仅是第一个字符。现在,您可以在下面看到我们的列表得到了适当的排序。

sort order.txt -n

现在你将有正确排序的输出结果:

1
2
3
5
5
10
21
23
60
432

2.3 反向排序[选项-r]

对于这个,我将再次使用我们的发行版列表。它将对任何内容进行反向排序。

sort filename.txt -r

反向排序

5. Ubuntu
4. elementary
3. Mint
2. Manjaro
1. MX Linux

2.4 随机排序[选项-R]

如果您在尝试反向排序参数时不小心按了shift键,您可能会得到一些奇怪的结果。-R按随机顺序重新排列输出。

sort filename.txt -R

以下是随机排列的结果:

4. elementary
1. MX Linux
2. Manjaro
5. Ubuntu
3. Mint

2.5 按月份排序[选项-M]

sort还内置了按月份排序的功能。它可以基于特定地区的信息识别多种格式。

下面是这个例子中的文本文件示例:

March
Feb
February
April
August
July
June
November
October
December
May
September
1
4
3
6
01/05/19
01/10/19
02/06/18

使用-M选项按月排序的输出结果:

sort filename.txt -M

下面是输出结果:

01/05/19
01/10/19
02/06/18
1
3
4
6
Jan
Feb
February
March
April
May
June
July
August
September
October
November
December

2.6 将排序后的结果保存到另一个文件中

如前所述,默认情况下sort不会更改原始文件。如果需要保存已排序的内容,可以这样做。

对于本例,我创建了一个新文件,我希望打印已排序的信息并将其保存为filename_sort .txt。

注意:如果您试图将排序后的数据定向到同一个文件,它将擦除文件的内容。

sort filename.txt -n > filename_sorted.txt

如果使用cat命令查看输出文件,这将是它的内容:

1. MX Linux
2. Manjaro
3. Mint
4. elementary
5. Ubuntu

2.7 排序特定列[选项-k]

如果文件中有一个表,可以使用-k选项指定要排序的列。我添加了一些任意数字作为第三列,并将显示按每一列排序的输出。我已经包括了几个例子来展示各种可能的输出。选项在列号后面添加。

1. MX Linux 100
2. Manjaro 400
3. Mint 300
4. elementary 500
5. Ubuntu 200
sort filename.txt -k 2

将文件中的第二列内容按字母顺序:

4. elementary 500
2. Manjaro 400
3. Mint 300
1. MX Linux 100
5. Ubuntu 200
sort filename.txt -k 3n

这将根据第三列的数字对文本进行排序。

1. MX Linux 100
5. Ubuntu 200
3. Mint 300
2. Manjaro 400
4. elementary 500
sort filename.txt -k 3nr

与上面的命令相同,只是排序顺序颠倒了。

4. elementary 500
2. Manjaro 400
3. Mint 300
5. Ubuntu 200
1. MX Linux 100

2.8 排序并删除重复项[选项-u]

如果您有一个具有内容重复的文件,-u选项将使您的工作更轻松。请记住,排序不会对原始数据文件进行更改。我选择创建一个新文件,其中只包含重复的项。在下面,您将看到命令运行后的输入和每个文件的内容。

1. MX Linux
2. Manjaro
3. Mint
4. elementary
5. Ubuntu
1. MX Linux
2. Manjaro
3. Mint
4. elementary
5. Ubuntu
1. MX Linux
2. Manjaro
3. Mint
4. elementary
5. Ubuntu
sort filename.txt -u > filename_duplicates.txt

这里是输出文件排序和去重的结果。

1. MX Linux 
2. Manjaro 
3. Mint 
4. elementary 
5. Ubuntu

2.9 排序时忽略大小写[选项-f]

许多运行sort的现代发行版在默认情况下会实现忽略大小写。如果没有,添加-f选项将产生预期的结果。

sort filename.txt -f

下面是sort命令忽略大小写的输出:

alpha
alPHa
Alpha
ALpha
beta
Beta
BEta
BETA

2.10 按人类格式数值排序[选项-h]

这个选项允许比较字母数字值,比如1k(即1000)。

sort filename.txt -h

这是排序后的输出:

10.0
100
1000.0
1k

3. 结论

我希望本教程能够帮助您了解Linux中sort命令的基本用法。sort命令通常与Linux中的uniq命令结合使用,用于对文本文件进行唯一的排序。

如果你有一些更好的应用安全,请留言给大家分享吧。

本文已同步至博客站,尊重原创,转载时请在正文中附带以下链接:https://www.linuxrumen.com/cyml/1685.html

点击了解更多,快速查看更多的技术文章列表

声明:本站部分内容来自互联网,如有版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
▍相关推荐
更多资讯 >>>