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

目录

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.hqwc.cn/news/416322.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言/c++指针详细讲解【超详细】【由浅入深】

指针用法简单介绍 指针,是内存单元的编号。 内存条分好多好多小单元,一个小单元有 8 位,可以存放 8 个 0 或 1;也就是说,内存的编号不是以位算的,而是以字节算的,不是一个 0 或 1 是一个编号&…

基于springboot+vue的校园周边美食探索及分享平台系统(前后端分离)

博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容:毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目背景…

ceph数据分布式存储

单机存储的问题 存储处理能力不足 传统的IDE的IO值是100次/秒,SATA固态磁盘500次/秒,固态硬盘达到2000-4000次/秒。即使磁盘的IO能力再大数十倍,也不够抗住网站访问高峰期数十万、数百万甚至上亿用户的同时访问,这同时还要受到主机…

13、Redis高频面试题

1、项目中为什么用Redis 我们项目中之所以选择Redis,主要是因为Redis有下面这些优点: 操作速度快:Redis的数据都保存在内存中,相比于其它硬盘类的存储,速度要快很多数据类型丰富:Redis支持 string&#x…

2024.1.16 用户画像day01 - 项目介绍

目录 一. 项目介绍 整体流程: 项目建设目的: 学习安排: 技术选型: 技术架构: 项目架构: 二 . 名词解释 一. 项目介绍 整体流程: 项目介绍-elasticSearch-业务数据源导入-离线指标开发-Flume实时采集-Nginx日志埋点数据- 结构化流实时指标 - 制作报表 数仓开发用户画像…

Hardware-Aware-Transformers开源项目笔记

文章目录 Hardware-Aware-Transformers开源项目笔记开源项目背景知识nas进化算法进化算法代码示例 开源项目Evolutionary Search1 生成延迟的数据集2 训练延迟预测器3 使延时约束运行搜索算法4. 训练搜索得到的subTransformer5. 根据重训练后的submodel 得到BLEU精度值 代码结构…

Python使用pyechart创建疫情确诊图(2)(2024)

import json from pyecharts.charts import Map from pyecharts import options as opts# 首先打开文件获取数据 f open("/Desktop/python/Project/数据可视化/疫情.txt", "r", encoding"UTF-8") data f.read()# 字符串转化成json数据 data_js…

Adobe全新AI驱动的Premiere Pro功能消除了枯燥的音频编辑任务

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

LeetCode19:删除链表的倒数第N个结点

力扣题目链接 思路:由于本题有可能删除头结点,为保证删除头结点和其他结点的操作一致,因此首先创建一个虚拟头结点dummy。 其次,本题需要删除倒数第N个结点,由于单链表只有next指针,因此需要找到倒数第N1…

浅谈安科瑞直流表在孟加拉某能源公司的应用

摘要:本文介绍了安科瑞直流电表在孟加拉某能源公司的应用。主要用于光伏直流柜内,配合分流器对汇流箱的输出电流电压等进行测量,并采集配电现场的开关信号,装置带有RS485接口可以把测量和采集的数据和设备状态上传。 Abstract: T…

计算机找不到msvcp120.dll的修复方法,总结五种可靠的方法

在计算机使用过程中,遭遇“找不到msvcp120.dll”这一问题的困扰是许多用户都可能遇到的情况。这一特定的系统文件msvcp120.dll,作为Microsoft Visual C Redistributable Package的重要组成部分,对于运行某些应用程序至关重要。当系统提示无法…

springboot mybatis-plus swing实现报警监听

通过声音控制报警器,实现声光报警,使用beautyeye_lnf.jar美化界面如下 EnableTransactionManagement(proxyTargetClass true) SpringBootApplication EnableScheduling public class AlarmWarnApplication {public static void main(String[] args) …