Linux———sort命令总结详解(狠狠爱住)

news2024/9/24 17:55:09

目录

sort命令:

命令参数及描述:

示例:

使用-b参数,忽略行首空白字符,按照第一列进行排序:

-d 选项是 sort 命令中一个非常有用的选项,它可以按照字典顺序进行排序,同时忽略非字母数字字符。

-f 选项是 sort 命令中的一个常用选项,它可以在排序时忽略大小写。

-g 选项是 sort 命令中的一个选项,它可以按照一般数值进行排序。

-i 选项是 sort 命令中的一个选项,它可以在排序时不区分大小写。

-M 选项是 sort 命令中的一个选项,它可以按照月份进行排序。

-r 选项是 sort 命令中的一个选项,它可以进行反向排序。

使用-t参数,指定字段分隔符为逗号,按照第二列进行排序:

放在文末的话:


sort命令:

它用于对文本文件进行排序,默认情况下按照字典序升序排列。

命令参数及描述:

参数描述
-b忽略行首的空白字符
-d按字典顺序进行排序,忽略非字母数字字符
-f忽略大小写
-g按一般数值进行排序
-i不区分大小写进行排序
-M按月份进行排序
-n按数值进行排序
-r反向排序
-t指定字段分隔符
-k指定要排序的字段

示例:

使用-b参数,忽略行首空白字符,按照第一列进行排序:

忽略行首的空白字符是为了避免空格、制表符等空白字符对排序结果的影响。

在默认情况下,sort命令会按照每一行的第一个字符进行排序,如果某一行的第一个字符是空格或制表符,那么它就会被排到较前或较后的位置,而这可能并不符合我们的实际需求。

例如,在下面的data.txt文件中,第一列数字前有不同数量的空格:

1 Apple

   2 Orange

3 banana

如果不忽略行首的空白字符,使用sort命令进行排序,结果如下:

$ sort data.txt

 1 Apple

   2 Orange

3 banana

这显然不符合我们的期望,因为数字应该是主要的排序依据。如果忽略行首的空白字符,使用-b参数进行排序,结果如下:

$ sort -b data.txt

1 Apple

2 Orange

3 banana

这样就可以按照数字大小进行正确的排序了。

-d 选项是 sort 命令中一个非常有用的选项,它可以按照字典顺序进行排序,同时忽略非字母数字字符。

具体来说,如果我们有一个包含一些单词和符号的文本文件,并且希望只按照单词进行排序,可以使用 -d 选项去掉符号和空格等非字母数字字符。

例如,我们创建以下文本文件 words.txt

接下来,我们添加一些符号和空格到文件中:

如果我们运行以下命令进行排序,会发现空格和空行也会被排序:

sort words.txt

输出结果如下:

但如果我们使用 -d 选项,sort 命令就会忽略这些符号和空格,只按照单词进行排序:

sort -d words.txt

输出结果如下:

可以看到,这次排序结果与我们最初的文件内容相同,符号和空格已经被忽略了。

-f 选项是 sort 命令中的一个常用选项,它可以在排序时忽略大小写。

再使用上面所说的 words.txt 的文件,其中banana,orange开头变成大写字母,希望按照字母顺序对它们进行排序。

首先我们运行以下命令进行排序:

sort words.txt

输出结果如下:

Banana

Orange

apple

pear

可以看到,排序结果是区分大小写的,大写字母会排在小写字母之前。

但是,如果我们使用 -f 选项,sort 命令将忽略大小写进行排序:

sort -f words.txt

输出结果如下:

apple

Banana

Orange

pear

可以看到,这次排序结果是忽略大小写的,所有单词都按照字母顺序排列

-g 选项是 sort 命令中的一个选项,它可以按照一般数值进行排序。

创造一个包含一些数字的文本文件,并且希望按照数值大小对它们进行排序。

例如,创建一个名为 numbers.txt 的文件,内容如下:

10

2

5

1

如果我们运行以下命令进行排序:

sort numbers.txt

输出结果如下:

1

10

2

5

可以看到,排序结果是根据字符串的字典顺序排列的,而不是按照数值大小排列的。

但是,如果我们使用 -g 选项,sort 命令将按照一般数值进行排序:

sort -g numbers.txt

输出结果如下:

1

2

5

10

可以看到,这次排序结果是按照数值大小从小到大排列的。

需要注意的是,使用 -g 选项时,sort 命令会将每行的第一个数值作为排序的依据。如果文件中存在非数字字符,则会被视为0进行排序。

-i 选项是 sort 命令中的一个选项,它可以在排序时不区分大小写。

还是那个包含一些水果单词的文本文件,并且希望按照字母顺序对它们进行排序。内容为:

apple Banana orange Pear

如果我们运行以下命令进行排序:

sort words.txt

输出结果如下:

Banana

Pear

apple

orange

可以看到,排序结果是区分大小写的,大写字母会排在小写字母之前。

但是,如果我们使用 -i 选项,sort 命令将不区分大小写进行排序:

sort -i words.txt

输出结果如下:

apple

Banana

orange

Pear

可以看到,这次排序结果是不区分大小写的,所有单词都按照字母顺序排列。

-M 选项是 sort 命令中的一个选项,它可以按照月份进行排序。

创建一个包含一些日期的文本文件,并且我们希望按照月份对它们进行排序。例如,我们创建一个名为 dates.txt 的文件,内容如下:

January 1

March 15

April 5

February 10

如果我们运行以下命令进行排序:

sort dates.txt

输出结果如下:

April 5

February 10

January 1

March 15

可以看到,排序结果是根据字符串的字典顺序排列的,而不是按照月份顺序排列的。

但是,如果我们使用 -M 选项,sort 命令将按照月份进行排序:

sort -M dates.txt

输出结果如下:

January 1

February 10

March 15

April 5

可以看到,这次排序结果是按照月份顺序排列的。

需要注意的是,-M 选项会将日期解释为月份,而不是日期加上年份。如果日期中包含了年份信息,排序结果可能不准确。

-r 选项是 sort 命令中的一个选项,它可以进行反向排序。

还是那个名为 words.txt 的水果单词文件,内容如下:

apple banana orange pear

如果我们运行以下命令进行排序:

sort words.txt

输出结果如下:

apple banana orange pear

可以看到,排序结果是按照字母顺序从小到大排列的。

但是,如果我们使用 -r 选项,sort 命令将进行反向排序:

sort -r words.txt

输出结果如下:

pear orange banana apple

可以看到,这次排序结果是按照字母顺序从大到小排列的。

-r 选项可以与其他选项(如 -n-M)一起使用,以实现不同类型的反向排序。

使用-t参数,指定字段分隔符为逗号,按照第二列进行排序:

在默认情况下,sort命令按照空格作为字段分隔符,并以每一行的第一个字段作为排序依据。

但有些情况下,文件中的字段可能用其他字符分隔,或者需要按照文件中的某一列进行排序。

我们现在变一下数据文件data.txt,其中每一行包含两个字段,以逗号为分隔符:

John,45

Mary,30

Peter,24

我们可以使用sort命令按照第二列进行排序,使用-t参数指定逗号为字段分隔符,-k参数指定按照第二列排序:

sort -t "," -k 2 data.txt

这样,sort命令就会按照文件中每一行的第二个字段(即数字)进行排序,输出的结果为:

Peter,24

Mary,30

John,45

这就是使用-t参数指定字段分隔符来进行排序的操作,可以让sort命令更灵活地处理不同的数据格式。

放在文末的话:

sort 命令是用于对文本文件进行排序的常用命令。

它可以按照不同的排序规则(如字典顺序、数值大小等)对文件的行进行排序,并将结果输出到终端或新文件中。

通过使用不同的选项,可以满足各种不同的排序需求。

sort 命令的使用灵活简单,是处理文本排序的有力工具。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1397405.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

创业前先把刘强东这两句琢磨明白!不然大概率失败!2024最适合创业的行业!2024年普通人的创业机会在哪里

第一句,真正解决一个问题。 这句话表达了,你的项目一定是要建立在解决具体的问题上,而不是你觉得自己有个好点子,或者好产品就可以了。因为即使你的产品很好,服务很好,如果不能切实的解决某个问题&#xf…

渐开线齿轮计算软件开发Python

从0开始开发计算软件,欢迎大家加入 源代码仓库

【C++】std::string 转换成非const类型 char* 的三种方法记录

std::string 有两个方法:data() 和 c_str(),都是返回该字符串的const char类型,那如何转换成非const的char呢? 下面展示三种方法: 强转:char* char_test (char*)test.c_str();使用string的地址&#xff…

Android 查看 md5

网上看了一大批文章老实说 百分之80的都是垃圾 , 都没有说明白怎么看 keytool -list -v -keyst xxx.jks 在自己的项目中 , terminal 输入上面命令 跟本就没有用看不到 md5 很多的文章让你找 signingReport , 但是你查看 自己的目录可能压根就没有这个 自己直接用手敲就可以…

分布式事务Seata实战-AT模式(注册中心为Eureka)

大致记录Seata的AT模式下创建项目过程中需要注意的点和可能遇到的问题。 本项目是以官网的给的示例(即下图)进行创建的,以Eureka为注册中心。 官网:Seata AT 模式 | Apache Seata™ 官方代码示例: 快速启动 | Apac…

JRT打印报告示例

借助JRT实现的打印客户端和打印元素绘制协议及表格元素,设计器基本成型,这次可以试着写一个用模板控制布局的打印报告示例了,测试点报告表格维护、打印标签、打印数据、打印条码、打印图片、打印表格。基于新架构的代码比M写打印简单多了&…

AGI即将出现,未来最重要的资源是算力和能源

丨划重点 ① 关于新模型的名字,奥特曼还没有明确的想法,但他称不喜欢像“iPhone 27”这样的命名方式。 ② 奥特曼认为AGI将在不久的将来出现,但对社会和工作的影响程度可能远低于预期。 ③ 奥特曼表示,尽管AI的潜力超过预期&#…

数据结构day1

1.思维导图 2.定义一个简单宏或宏函数,实现两个数交换。 3.定义字符类型指针,指针指向n个连续堆区内存,输入,计算字符串长度 定义函数,实现内存申请 定义函数,解释字符串长度 定义函数,释放内…

《亚太教育》期刊投稿方式

《亚太教育》杂志是国家新闻出版总署批准的正规教育类期刊,旨在传播教育文化信息和动态,展示教育实践模式和经验,搭建教育科研成果交流平台。杂志将致力于服务教育事业的创新发展,传播教育文化新信息,展示教育实践新模…

Electron Apple SignIn 登录

本人写博客,向来主张:代码要完整,代码可运行,文中不留下任何疑惑。 最讨厌写博客,代码只留下片段,文中关键的东西没写清楚。之前看了那么多文章,就是不告诉我clientId从哪来的。 官方资料地址&…

5. UE5 RPG使用GAS技能系统

之前也介绍过GAS的使用: UE 5 GAS Gameplay Ability System UE 5 GAS 在项目中处理AttributeSet相关 UE 5 GAS 在项目中通过数据初始化 基础的讲解这里不再诉说,有兴趣的可以翻我之前的博客。 接下来,在RPG游戏中实现GAS系统的使用。 GAS系统…

一次缓存失效引发的惨案!

分享是最有效的学习方式。 故事 对于小猫来讲,最近的一段日子是不好过的,纵使听着再有节拍的音乐,也换不起他对生活的热情。由于上一次“幂等事件”躺枪,他已经有几天没有休息好了。他感觉人生到了低谷。 当接手这个商城项目之后…

Linux 为何不把图形用户界面写入内核?

Linux 为何不把图形用户界面写入内核? 在开始前我有一些资料,是我根据网友给的问题精心整理了一份「Linux的资料从专业入门到高级教程」, 点个关注在评论区回复“888”之后私信回复“888”,全部无偿共享给大家!&#…

禅道:从安装到使用,一篇文章带你全面了解

博客前言: 在这个充满竞争和快节奏的世界里,项目管理已经成为了许多行业的关键环节。禅道作为一种功能强大、易用的项目管理工具,正在被越来越多的企业和团队所采用。它不仅能帮助我们高效地管理项目,还能提升团队协作和沟通的效…

DC-1靶机刷题记录

靶机下载地址: 链接:https://pan.baidu.com/s/1GX7qOamdNx01622EYUBSow?pwd9nyo 提取码:9nyo 参考答案: https://c3ting.com/archives/kai-qi-vulnhnbshua-tiDC-1.pdf【【基础向】超详解vulnhub靶场DC-1】 https://www.bilibi…

【数据结构二】链表和LinkedList详解

目录 链表和LinkedList 1.链表的实现 2.LinkedList的使用 3.ArrayList和LinkedList的区别 4.链表OJ题训练 链表和LinkedList 当 在 ArrayList 任意位置插入或者删除元素时,就需要将后序元素整体往前或者往后 搬移,时间复杂度为 O(n) ,效率…

ChatGLM-6B部署和微调实例

文章目录 前言一、ChatGLM-6B安装1.1 下载1.2 环境安装 二、ChatGLM-6B推理三、P-tuning 微调3.1微调数据集3.2微调训练3.3微调评估3.4 调用新的模型进行推理 总结 前言 ChatGLM-6B ChatGLM-6B 是一个开源的、支持中英双语的对话语言模型,基于 General Language Mo…

unity-shader笔记OLD

shader shader在面板中的位置相关代码代码切换shader shader在面板中的位置 选中物体属性面板中 相关代码 代码切换shader 挂载到怪物上的shader名字统一叫body,然后获取上面的SkinnedMeshRender SkinnedMeshRender smr; //恢复到原来的shader …

JavaScript DOM可以做什么?

1、通过id获取标签元素 DOM是文档对象模型&#xff0c;它提供了一些属性和方法来方便我们操作document对象&#xff0c;比如getElementById()方法可以通过某个标签元素的id来获取这个标签元素 // 用法 window.document.getElementById(id); // 例子 <!DOCTYPE html> &l…

LeetCode、374. 猜数字大小【简单,二分】

文章目录 前言LeetCode、374. 猜数字大小【简单&#xff0c;二分】题目及类型思路及代码实现 资料获取 前言 博主介绍&#xff1a;✌目前全网粉丝2W&#xff0c;csdn博客专家、Java领域优质创作者&#xff0c;博客之星、阿里云平台优质作者、专注于Java后端技术领域。 涵盖技…