请关注本头条号,每天坚持更新原创干货技术文章。
如需学习视频,请在微信搜索公众号“智传网优”直接开始自助视频学习
1. 前言
Linux中的sort命令用于对文本文件的内容进行排序。本教程向您展示了sort命令的一些基本示例。
Linux中的sort命令sort命令以有用的方式排列文本行。这个简单的工具可以帮助您快速地从命令行对信息进行排序。
语法:
sort?[options]?
你应该注意几件事:
当您使用没有任何选项的排序时,将强制执行默认规则。它有助于理解默认规则以避免意外结果。在使用sort时,原始文件和数据是安全的。输入的结果只显示在命令行上。但是,也可以根据具体需求,将输出结果指定保存为单独的文件。稍后再详细介绍。sort最初设计用于ASCII字符。我没有对大量不同编码进行测试,但是不同的编码可能会产生意想不到的结果。
2. `sort`命令使用案例
sort命令中的默认规则这些是使用sort命令时的默认规则。前几个例子将说明如何管理这些优先级。然后,我们将查看特定选项。
- 数字 > 字母
- 小写 > 大写
2.1 `sort`命令使用规则
让我向您展示一些排序命令的例子,您可以在各种情况下使用它们。
- 按字母顺序排序
默认的排序命令可以方便地按字母顺序查看信息。不需要任何选项,即使大小写字母混合的情况下,A-Z排序也可以按预期工作。
我将使用一个名为filename.txt的示例文本文件,如果您查看该文件的内容,您将看到以下内容:
MX?Linux
Manjaro
Mint
elementary
Ubuntu
sort?filename.txt
以下是按字母顺序排列的输出结果:
elementary
Manjaro
Mint
MX?Linux
Ubuntu
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
点击了解更多,快速查看更多的技术文章列表。