shell编程系列(6)-使用Sort进行数据排序

news2024/11/24 8:04:14

文章目录

  • 前言
  • 使用Sort命令文本排序
    • sort命令的选项如下:
    • 基本排序
    • 对单个指定列进行排序
    • 对多个指定列进行排序
    • 删除重复的行
  • 结语

前言

shell脚本通常用作一些自动化的操作,但是在有些场景下例如科研运算,有时候会产生大量的运算结果文件,我们就需要对这些结果文件进行分析和统计,下面就一起看看如何使用shell对数据进行排序和统计

使用Sort命令文本排序

在linux系统中涉及到排序的问题都是使用sort命令进行排序,sort的基本语法如下:

# option 是可选的,默认对第一列按字典顺序排序
sort  [option] [file]

sort命令的选项如下:

选项说明
-b忽略前导空格或者制表符,找出第一个非空格字符。
-c测试文件是否已经排序。
-d根据字典顺序排序。该选项仅比较数字、字母和空格等字符。
-f忽略大小写。将小写字母转成大写字母后参与比较。
-i仅仅比较可打印字符。
-n根据算术值进行比较,参与比较的字符有空格、十进制数字,以及减号等。如果对非数值字符进行算术值比较,将会产生无法预知的结果。
-R根据哈希值随机排序。
-r颠倒排序结果。
-k定义排序关键字。
-m仅仅合并已经排好序的文件,不执行排序操作。
-o将排序结果写入文件,而不是标准输出设备。
-t指定字段分隔符。默认值为空格。
-u删除重复的行,只保留第一个。

现在我们使用这个demo.txt文件,进行各种排序的演示,demo.txt 是一份成绩单,内容如下:

cat demo.txt
# 第一列姓名		第二列分数		第三列级别
zhangsan        85              A       
lisi            96              A          
wangwu          65              B         
tom             58              C         
jerry           100             A 

基本排序

使用sort命令,不加任何参数,进行基本排序,基本排序的规则是对第一列进行字典顺序升序,代码如下:

sort demo.txt

结果如下:可以看到是针对第一列姓名进行排序
在这里插入图片描述

对单个指定列进行排序

在有些情况下,我们是对某一列进行排序,例如对于成绩单,我们想按照分数从高到底排序,命令如下:

# sort默认是按照字段顺序也就是字符串的顺序排列
# -n 申明排序的列是数值型的,按数字大小排序
# -r 默认是升序,我们需要降序从高到低
# -k 指定按第二列进行排序
sort -nr -k 2 demo.txt

在这里插入图片描述

对多个指定列进行排序

有时候我们需要对多个列进行排序,例如成绩单中,我们想先对级别进行排序,然后在按照分数排序,注意,这里首先是按照第三列按字典升序排序,然后对第二列按照数值降序排序,示例如下:

# 对多列进行排序可以使用多个 -k 
# -k 对第三列进行字典升序排序(默认就是字典升序排序)
# -k 对第二列进行数值降序(n 代表按数值排序,r代表降序)
 sort -k 3,3 -k 2,2nr demo.txt 

在这里插入图片描述

删除重复的行

有时我们的文件内存在大量重复的数据,利用sort命令我们可以很方便的去重,示例如下:
我们有demo2.txt文件,内容如下:
在这里插入图片描述
对demo2.txt文件进行排序,如下:
在这里插入图片描述
可以看到有两行是重复的,下面进行去重:

# -u 代表对文件进行去重
sort -u demo2.txt

结果如下:
在这里插入图片描述
可以看到结果里以及没有重复的行了。

结语

关于sort排序的内容就先介绍这么多,后面的文章会介绍其他的文本处理工具 ,如果我们在工作和学习中能用好这些工具,将会大大的提高我们的效率。

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

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

相关文章

学习记录PCL-1 通过哈希表进行三维点云的虚拟格网划分

直接对整个场景的点云进行特征提取,效果很差,因此通过划分区域格网进行划分。格网划分有很多种方式,在这里尝试使用哈希表进行格网链接,后续通过在每个格网内基于点云特征进行提取。 参考博客: 点云侠的PCL 点云分块_p…

揭示堆叠自动编码器的强大功能 - 最新深度学习技术

简介 在不断发展的人工智能和机器学习领域,深度学习技术由于其处理复杂和高维数据的能力而获得了巨大的普及。在各种深度学习模型中,堆叠自动编码器[1]作为一种多功能且强大的工具脱颖而出,用于特征学习、降维和数据表示。本文探讨了堆叠式自…

影视网站影视介绍评论网站

基于Boostrap的响应式电影网站影视网站移动技术应用开发一、考核要求1、考核内容本课程的成绩主要依据平时表现、文档、答辩(设计讲解、操作演示等)等方面评定。运用所学知识,独立设计并开发一个影视介绍评论网站,具体要求如下&am…

凯旋泥巴佬正式全面亮相,Triumph TF 250-X

之前给大家曝光过凯旋将要进军越野车领域,并且发动机和车架都已经造出来了,还要去参加赛事想要获得比赛的荣誉和名次,就在今日凯旋的一台越野车TF 250-X正式亮相,售价9995美元。 这是凯旋真正意义上的第一台竞赛级越野车&#xff…

特征选择的方法:包裹法之递归特征消除

1.递归特征消除法的基本原理 递归特征消除法是一种贪婪的优化算法,致力于通过反复创建模型的方式找到性能最佳的特征子集。 首先将筛选的K个特征作为初始特征子集,开展机器学习计算得到每个特征的重要性,利用交叉验证方法得到初始特征子集的…

智慧水务系统在流域水环境规划中起到什么作用?

智慧水务系统在流域水环境规划中扮演着越来越重要的角色。作为一款集信息化、自动化、智能化、智慧化于一体的水务管理系统,智慧水务系统不仅能够提高水环境规划的效率,还能为水资源的保护和利用提供有力支持。 在流域水环境规划中,智慧水务系…

Windows10设置定时提醒

文章目录 Windows10设置定时提醒创建提醒文件新建文本文档修改文件编码和后缀双击测试 创建文件夹创建任务测试运行 Windows10设置定时提醒 创建提醒文件 新建文本文档 修改文件编码和后缀 双击测试 创建文件夹 创建任务 创建触发器 选择程序 测试运行 弹窗正常

16.Oracle数据库Row_number() over()函数排序使用方法

1.原始数据(部分) SELECT * FROM SCOTT.EMP ; 2.使用Row_number() over() 函数,排序 SELECT EMPNO,ENAME,SAL,DEPTNO,Row_number() over( order by sal) rs FROM SCOTT.EMP ; 根据工资排序并添加序号 3.使用Row_number() over() 函数,分组并排序 SELECT EMPNO,ENAME,SAL,DEPTN…

深眸科技|AI+机器视觉加速进入工业制造,成为提升智能制造必选项

随着人工智能技术的飞速发展,AI视觉与机器视觉技术正在加速进入工业制造中。机器视觉技术赋予机器新活力与新智慧,不仅让机器实现精密工作的完成,还让其能够代替部分脑力活动,具有更高的智慧与能力。 深眸科技CEO周礼表示&#x…

自动伸缩:解密HPA、VPA、CA和CPA智能调整应用大小和数量

关注【云原生百宝箱】公众号,快速掌握云原生 Kubernetes提供了多种自动伸缩机制,例如HPA(Horizontal Pod Autoscaling),可以根据不同情况动态调整Pod副本数量。此功能使 Pod 能够有效地处理当前流量,而无需…

Android启动系列之进程杀手--lmkd

本文概要 这是Android系统启动的第三篇文章,本文以自述的方式来讲解lmkd进程,通过本文您将了解到lmkd进程在安卓系统中存在的意义,以及它是如何杀进程的。(文中的代码是基于android13) 我是谁 init:“大…

P8A004-系统加固-磁盘访问权限

【预备知识】 访问权限,根据在各种预定义的组中用户的身份标识及其成员身份来限制访问某些信息项或某些控制的机制。访问控制通常由系统管理员用来控制用户访问网络资源(如服务器、目录和文件)的访问,并且通常通过向用户和组授予…

字节的“游戏心脏”,真的停止跳动了吗?

字节跳动在游戏行业的宏大叙事,终究变成了一场游戏一场梦。 近日,朝夕光年首次公开回应此前的裁员传闻,明确表示会有业务方向和组织调整,游戏业务将迎来大规模收缩,未来会更加聚焦部分创新型游戏及相关技术的探索。 …

管理类联考——写作——考点+记忆篇——论说文——记忆

文章目录 整体文字提炼/目录大纲法图像畅想/记忆宫殿法 审题立意论说文-历年真题命题类型总结 写作结构论说文-万能写作结构 分析段标题开头段结尾过渡段和措施段 整体 整体用记忆宫殿法、绘图记忆法等 文字提炼/目录大纲法 利用书本的目录、大纲,一本好书&#xff…

增加F110 付款方式的随手记录

随便记录一下,基本上有这些信息可以了 为了保持PRD与测试机一致的银行代码,需要先在DEV,QAS 改成4 外部给号 主要都是在FBZP 开户行维护-FI12_HBANK/FI12 S4hana 里面有的没有办法在FI12 维护只能去NWBC NWBC:维护银行账户并关联…

MatchPyramid实现文本匹配

引言 今天利用MatchPyramid实现文本匹配。 原论文解析→点此←。 MatchPyramid 核心思想是计算两段文本间的匹配矩阵,把它当成一个图形利用多层卷积网络提取不同层级的交互模式。 匹配矩阵是通过计算两段输入文本基本单元(比如字或词)之间相似度得到的&#xf…

Verilog 入门(三)(表达式)

文章目录 操作数操作符算术操作符关系操作符相等关系操作符逻辑操作符按位操作符条件操作符 操作数 操作数可以是以下类型中的一种: 常数参数线网寄存器位选择部分选择存储器单元函数调用 操作符 Verilog HDL中的操作符可以分为下述类型: 算术操作符…

a-select:远程搜索——防抖节流处理——基础积累

a-select:远程搜索——防抖节流处理——基础积累 效果图下拉筛选数据&#xff1a;远程搜索功能&#xff1a; 效果图 下拉筛选数据&#xff1a; <a-selectshow-searchv-model"form.jobPositionCode"placeholder"请选择岗位"style"width: 100%"…

改进LiteOS中物理内存分配算法(详细实验步骤+相关源码解读)

一、实验要求 优化TLSF算法&#xff0c;将Best-fit策略优化为Good-fit策略&#xff0c;进一步降低时间复杂度至O(1)。 优化思路&#xff1a; 1.初始化时预先为每个索引中的内存块挂上若干空闲块&#xff0c;在实际分配时避免分割&#xff08;split&#xff09;操作&#xff…

leetcode面试经典150题——34 有效的数独(矩阵)

题目&#xff1a; 有效的数独 描述&#xff1a; 请你判断一个 9 x 9 的数独是否有效。只需要 根据以下规则 &#xff0c;验证已经填入的数字是否有效即可。 数字 1-9 在每一行只能出现一次。 数字 1-9 在每一列只能出现一次。 数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出…