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 命令的使用灵活简单,是处理文本排序的有力工具。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

UI开发布局-HarmonyOS应用UI开发布局

UI页面的构建不用再像Android开发过程中在.xml文件中书写,可直接在页面上使用声明式UI的方式按照布局进行排列,构建应用的页面。 如下代码使用Row、Column构建一个页面布局,在页面布局中添加组件Text、Button,共同构成页面&#…

sd-wan跨境专线ip是固定的吗?

SD-WAN(软件定义广域网)是一种网络技术,它可以通过集中的管理和控制来提供更好的网络性能和可靠性。跨境专线是指连接不同国家之间的网络连接。 固定IP是指在网络中分配给特定设备的永久性 IP 地址,与动态 IP(每次连接…

python tkinter 最简洁的计算器按钮排列

代码如下,只要再加上按键绑定事件函数,计算器既可使用了。 import tkinter as tk from tkinter.ttk import Separator,Buttonif __name__ __main__:Buttons [[%,CE,C,←],[1/x,x,√x,],[7, 8, 9, x],[4, 5, 6, -],[1, 2, 3, ],[, 0, ., ]]root tk.T…

RK3568平台 LT9211转接芯片调试笔记

一.简介 龙讯LT9211是一个高性能转换器,支持MIPI LVDS TTL两两之间转换。 使用此款芯片大部分为MIPI与LVDS进行互相转换。 下图为LT9211的典型应用图: 二.LT9211原理图 三.车载显示器和摄像头系统 四.调试LT9211输出 MIPI数据 (1&#xf…

红队打靶练习:NULLBYTE: 1

目录 信息收集 1、arp 2、nmap 3、nikto 4、whatweb 目录探测 1、dirsearch 2、gobuster WEB web信息收集 图片信息收集 hydra爆破 sql注入 闭合 爆库 爆表 爆列 爆字段 hashcat SSH登录 提权 信息收集 1、arp ┌──(root㉿ru)-[~/kali] └─# arp-scan…

Unity-场景

创建场景 创建新的场景后: 文件 -> 生成设置 -> Build中的场景 -> 将项目中需要使用的场景拖进去 SceneTest public class SceneTest : MonoBehaviour {// Start is called before the first frame updatevoid Start(){// 两个类: 场景类、场…

配置zabbix平台对数据库以及主从状态的监控

引言:明人不说暗话,今天分享下配置zabbix平台对数据库以及主从状态的监控 准备好zabbix监控平台(zabbix-server端)例10.12.153.235 db1客户端(zabbix-agent)例10.12.153.73 1.安装Zabbix存储库 # rpm -Uv…

策略路由与NQA联动示例

某公司网络使用SwitchA做汇聚层交换机,接入层交换机LSW做用户网关,LSW和SwitchA之间路由可达。汇聚层交换机SwitchA通过两条链路连接到两个核心交换机上,一条是高速链路,网关为10.1.20.1/24;另外一条是低速链路&#x…

算法 动态分析 及Java例题讲解

动态规划 动态规划(英语:Dynamic programming,简称 DP),是一种在数学、管理科学、计算机科学、经济学和生物信息学中使用的,通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。动态规划常常适…

「 网络安全常用术语解读 」杀链Kill Chain详解

1. 简介 早在2009年,Lockheed Martin公司就提出了杀链(Kill Chain)理论,现在也称之为攻击者杀链(Attacker Kill Chain)。杀链其实就是攻击者进行网络攻击时所采取的步骤。杀链模型包括7个步骤:1侦察 -> 2武器化 -> 3交付 -> 4利用 …

【Python】PyCharm设置控制台输出的行数限制

在使用PyCharm的时候,如果在控制台输出的信息过多室,控制台仅会保留一部分的输出信息。想要改变这个限制,设置方法如下: 进入到PyCharm的安装目录下,我的是C:\Develop\PyCharm202303\PyCharm 2023.3进入bin找到文件id…

鸿蒙开发(六)布局概述

迄今为止,我还没有正式提到布局的概念。但其实我之前的demo里面,已经默认使用到了一种布局,那就是线性布局(Row、Column),这也是DevEco创建项目默认页面里面默认采用的布局。那么本篇,带着大家一…

【C语言】ipoib模块 - ipoib_send_rss函数

一、ipoib_send_rss函数定义 int ipoib_send_rss(struct net_device *dev, struct sk_buff *skb,struct ib_ah *address, u32 dqpn) {struct ipoib_dev_priv *priv ipoib_priv(dev);struct ipoib_tx_buf *tx_req;struct ipoib_send_ring *send_ring;u16 queue_index;int hlen…

Backtrader 文档学习-Indicators混合时间框架

Backtrader 文档学习-Indicators混合时间周期 1.不同时间周期 如果数据源在Cerebro引擎中具有不同的时间范围和不同的长度,指示器将会终止。 比如:data0是日线,data1是月线 。 pivotpoint btind.PivotPoint(self.data1) sellsignal self…

第11章 GUI Page500~504 步骤三十二:打开画板文件02

各个图元类新增GetTypeName_Static(),并将原来的GetTypeName()改为调用静态方法实现: 直线: 圆: 十字: 矩形: 文字: tool_4_save_load.hpp添加两行 tool_4_save_load.cpp增加: 增加…

利用python进行有限元分析(一)

【利用Python进行有限元分析】 https://www.bilibili.com/video/BV1VE411s7Yy/?share_sourcecopy_web&vd_source3c57d167735998da175fa3c99f9d0e20离散了位移场,使用能量原理,用动能和应变能和虚功原理来寻找一致的质量、刚度和节点力向量。 一致是…

机器人强化学习-双机械臂

概要 基于 robosuite 库,进行双臂机器人学习训练 环境测试 下面展示下分别控制两个机械手随机运动的画面: 双臂显示场景如下:双臂调用代码如下: import numpy as np import robosuite as suite import robomimic import rob…

集成腾讯Bugly使用步骤以及字符串的上传(IOS手把手)

一、集成Bugly 1.通过CocoaPods集成,在工程的Podfile里面添加以下代码: pod Bugly 保存并在终端cd进入你的项目路径,执行pod install,然后用后缀为.xcworkspace的文件打开工程。 2.在工程的AppDelegate.m文件导入头文件 #import "A…

MacMaster:一款功能强大的高级网络接口管理与监控工具

关于MacMaster MacMaster是一款功能强大的高级网络接口管理与监控工具,该工具专为网络安全研究人员打造,支持对各种不同系统网络接口的MAC地址进行管理。 MacMaster本质上是一个全面的命令行工具,该工具在设计之初就考虑到的简单性和功能性…

树形结构下拉框组件vue-treeselect的使用(安装、模糊匹配、单选、多选、延迟加载、异步搜索等)

一、基本使用流程 首先npm安装依赖 npm install riophae/vue-treeselect --save然后在需要使用的组件中引入 import Treeselect from riophae/vue-treeselect import riophae/vue-treeselect/dist/vue-treeselect.css声明组件 components: { Treeselect }使用 <treesele…