百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

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

ahcoder 2025-02-10 11:15 9 浏览


请关注本头条号,每天坚持更新原创干货技术文章。

如需学习视频,请在微信搜索公众号“智传网优”直接开始自助视频学习

1. 前言

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

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

语法:

sort?[options]?

你应该注意几件事:

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


2. `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


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

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

相关推荐

Linux 6.15将更新媒体子系统:高通Iris驱动首次亮相

IT之家3月24日消息,科技媒体phoronix昨日(3月23日)发布博文,报道称Linux6.15内核将于本周启动合并窗口,首批提交的PullRequest请求之一,就...

Ubuntu 25.04发行版登场:Linux 6.14内核,带来多项技术革新

IT之家4月18日消息,科技媒体linuxiac昨日(4月17日)发布博文,报道称代号为PluckyPuffin的Ubuntu25.04发行版正式上线,搭载最新Linu...

WordPress 6.8 版本发布:聚焦性能升级,代号“Cecil”

WordPress6.8版本发布:聚焦性能升级,代号“Cecil”全球最受欢迎的内容管理系统(CMS)WordPress正式推出最新版本6.8,代号“塞西尔”(Cecil),以此致敬传奇钢琴家...

Linus Torvalds接受微软Hyper-V升级 下一代Linux启动会更快

虽然Windows的粉丝和Linux的粉丝经常喜欢进行激烈的键盘大战,但操作系统的制造商们自己也了解彼此的优缺点。毫无疑问,微软也明白这一点,事实上,它甚至鼓励用户尝试Linux,尽管是使用...

Debian 12发布:Linux内核升级6.1(debian更新内核)

IT之家6月11日消息,Debian是最古老的GNU/Linux发行版之一,也是许多其他基于Linux的操作系统的基础,包括Ubuntu、Kali、MX和树莓派OS等。这...

Linux Mint预告新功能:升级Nemo搜索、LMDE 7支持OEM安装

IT之家4月10日消息,LinuxMint发布了最新月度简讯,宣布增强Nemo文件管理器的文件搜索功能、Cinnamon桌面环境开始支持Wayland、LMDE7(LinuxM...

Linux 6.2合并大量网络系统更新:推进Wi-Fi 7和800 Gbps网络

IT之家12月15日消息,Linux6.2合并窗口期内已经确认将会合并大量网络子系统更新。和以往版本相同,Linux6.2内核更新周期在网络功能上有大量的改进,更多的细节可以访问这条...

Linux内核升级实践指南(linux内核怎么升级)

Linux内核升级是一个需要谨慎操作的过程,但掌握正确方法后可以显著提升系统性能、安全性或硬件兼容性。以下是一份详细的实践指南,涵盖主流方法及注意事项:一、准备工作查看当前内核版本bashuname...

Linux又将迎来大版本更新 5.20版可能会被称为Linux 6.0

如果你错过了昨天Linux5.19的发布公告,那么这一消息需要回顾一下:被称为Linux5.20的开发中的内核很可能会被称为Linux6.0。根据LinusTorvalds对现代版本的划分,L...

周六的娱乐就是安装一台OracleLinux虚拟机(一)

每个人有每个人的娱乐方式。老父亲可能喜欢摆弄一些机械工具修修补补。我趁着周六安装一套OracleLinux,寓学于乐。在oracle网站上,下载VirtualBox,现在最新版本是7.0.8。在安装过...

Linux系统下Gaussian 16的安装(linux系统如何安装新软件)

Gaussian是目前使用最多的量子化学计算软件,当前最新的版本为Gaussian16C.01。理论上来说Gaussian并不需要安装,因为高斯一般是不出售源代码的,只有二进制文件,以Gaussi...

「Linux基础」VMWare虚拟机安装CentOS后配置静态ip

在VMWare中安装本地虚拟机CentOS7操作系统,动态IP地址会经常变化,不便于管理与实验。为了便于实验,考虑设置成静态IP地址,目标是本地局域网可以通过NAT网关互相访问,且能连接互联网。由于是...

Win10虚拟机,Hyper-V安装CentOS,一次成功

打开控制面板,选择程序选择启用或关闭Windows功能选中Hyper-V下所有的组件。提示我们需要,重启计算机,保存我们的文件,之后点击“立即重新启动”选择开始菜单,输入Hy,就可以打开虚拟机管理器了...

如何在Windows 10中的Hyper-V虚拟机上安装CentOS Linux

注意双重引导的一种可行且相当不错的替代方法是在虚拟机上安装各种操作系统。Microsoft正式支持CentOS作为Hyper-V的来宾OS,并且在安装时可以很好地集成。自CentOS6.4版以来,用...

安装Linux虚拟机的5个理由,以及不安装的5个原因

虚拟机(VM)允许你在不永久更改计算机的情况下探索Linux。如果你对Linux很好奇,但犹豫是否要尝试,VM提供了一个安全、灵活的解决方案。如果这是你第一次听说虚拟机,虚拟机就像“计算机中的计算机”...