Linux 中使用 sort 指令分组排序详解

Linux 中使用 sort 指令分组排序详解

sort 中进行分组排序主要用到的选项为 -k,此文,我们着重于该选项的使用方式,用到的其它选项不做解释,有兴趣的同学可以查看帮助文档
在这里插入图片描述在这里插入图片描述

1. 数据准备

现有数据如下,文件名 sort_source.txt

Nov 1 : 4548
Nov 2 : 1383
Oct 2 : 3738
Oct 3 : 418
Nov 4 : 1383
Nov 14 : 1383
Nov 11 : 1381
Nov 12 : 1381
Oct 4 : 4105
Oct 5 : 4089

2. 数据处理

2.1 按某一列进行排序

# 按第一列进行月份排序
sort -k 1M sort_source.txt
# 输出如下:
Oct 2 : 3738
Oct 3 : 418
Oct 4 : 4105
Oct 5 : 4089
Nov 11 : 1381
Nov 12 : 1381
Nov 14 : 1383
Nov 1 : 4548
Nov 2 : 1383
Nov 4 : 1383# 按第 2 列进行数字排序
sort -k 2g sort_source.txt
# 输出如下:
Nov 1 : 4548
Nov 2 : 1383
Oct 2 : 3738
Oct 3 : 418
Nov 4 : 1383
Oct 4 : 4105
Oct 5 : 4089
Nov 11 : 1381
Nov 12 : 1381
Nov 14 : 1383

2.2 分组排序

# 先按第一列进行排序(分组),再按第二列进行排序
sort -k 1M -k2g sort_source.txt
# 输出如下:
Oct 2 : 3738
Oct 3 : 418
Oct 4 : 4105
Oct 5 : 4089
Nov 1 : 4548
Nov 2 : 1383
Nov 4 : 1383
Nov 11 : 1381
Nov 12 : 1381
Nov 14 : 1383

2.3 按某列的某几个字符进行排序

2.3.1 不指定分割符的情况下

不指定分割符的情况下,会从空格处进行计数,起始偏移量为 1

# 按第四列的第二、三个可显字符进行数字排序
sort -k 4.3,4.4g sort_source.txt
# 输出如下:注意,第3个字符是从空白字符开始算,起始为 1
Oct 5 : 4089	# 第四列第3个字符为0
Oct 4 : 4105
Oct 3 : 418
Nov 11 : 1381
Nov 12 : 1381
Nov 14 : 1383
Nov 2 : 1383
Nov 4 : 1383
Nov 1 : 4548
Oct 2 : 3738

2.3.2 指定分割符的情况下

指定分割符时,以第一个非指定字符为起始,偏移量为 1

# 按第四列的第二、三个字符进行数字排序
sort -t ' ' -k 4.2,4.3g sort_source.txt
# 输出如下:注意,第2个字符是从非空白字符开始算,起始为 1
Oct 5 : 4089	# 第四列第2个字符为0
Oct 4 : 4105
Oct 3 : 418
Nov 11 : 1381
Nov 12 : 1381
Nov 14 : 1383
Nov 2 : 1383
Nov 4 : 1383
Nov 1 : 4548
Oct 2 : 3738

2.3.2 指定分割符的情况下按某列内的某一个字符进行排序

注意,要按某个确切的字符进行排序,则起始偏移量和结束偏移量要相同,且必须要指定结束偏移量

# 按第四列的第3个字符进行数字排序
sort -t ' ' -k 4.3,4.3g sort_source.txt
# 输出如下:注意,第3个字符是从非空白字符开始算,起始为 1
Oct 4 : 4105
Oct 2 : 3738
Nov 1 : 4548
Nov 11 : 1381
Nov 12 : 1381
Nov 14 : 1383
Nov 2 : 1383
Nov 4 : 1383
Oct 3 : 418
Oct 5 : 4089

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

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

相关文章

Shiro-单点登录原理

单点登录原理 一、单系统登录机制 1、http无状态协议 web应用采用browser/server架构,http作为通信协议。http是无状态协议,浏览器的每一次请求,服务器会独立处理,不与之前或之后的请求产生关联,这个过程用下图说明…

关于 Java 同名类加载顺序问题排查方案

排查背景 最近在生产上部署 UDF 时,遇到一个两个环境完全相同,但是一个客户端报错另一个正常的情况,经过多次调试问题终于得以解决,现将解决思路记录一下,希望能对后来者有所帮助。(生产环境不便于截图。。。暂不展示…

Arrays.asList() 详解

Arrays.asList() 详解 【1. 要点】 该方法是将数组转化成List集合的方法。 List list Arrays.asList(“a”,“b”,“c”); 注意: (1)该方法适用于对象型数据的数组(String、Integer…) (2&#xff0…

Vim 编码问题详解

Vim 编码问题详解 vim 中有 4 个与编码相关的配置,分别是 encoding、termencoding、fileencoding 和 fileencodings。在实际使用中任何一个配置有问题都可能会导致乱码,因此我们应该清楚每个配置的含义。 1. encoding encoding 是 vim 内部使用的字符编…

@Autowired作用在普通方法上

Autowired作用在普通方法上 Autowired作用在普通方法上,会在注入的时候调用一次该方法,如果方法中有实体参数,会对方法里面的参数进行装配,并调用一次该方法。这个可以用来在自动注入的时候做一些初始化操作。

@Autowired注解作用在方法上

Autowired注解作用在方法上 Autowired注解作用在方法上 (1)该方法如果有参数,会使用autowired的方式在容器中查找是否有该参数 (2)会执行该方法

spring定时任务的几种实现方式

spring定时任务的几种实现方式 一.分类 从实现的技术上来分类,目前主要有三种技术(或者说有三种产品): Java自带的java.util.Timer类,这个类允许你调度一个java.util.TimerTask任务。使用这种方式可以让…

Spring定时任务

Spring定时任务(一):SpringTask使用 背景:在日常开发中,经常会用到任务调度这类程序。实现方法常用的有:A. 通过java.util.Timer、TimerTask实现。 B.通过Spring自带的SpringTask。 C. 通过Spring结合Quartz实现。本文我们将讲述…

关于Spring 任务调度之task:scheduler与task:executor配置的详解

关于Spring 任务调度之task:scheduler与task:executor配置的详解 其实就是Spring定时器中配置文件中一些配置信息,由于笔者自己是头一次使用,有些配置详细不太明白,随即研究了一番,于是想记录一下,有需要的小伙伴可以…

Spring的任务调度@Scheduled注解——task:scheduler和task:executor的解析

Spring的任务调度Scheduled注解——task:scheduler和task:executor的解析 applicationContext 的配置如下: <?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.springframework.org/schema/beans"xmlns:context"…

CAP 理论、BASE 理论、FLP 理论

CAP 理论、BASE 理论、FLP 理论 CAP 理论、BASE 理论、FLP 理论 1.CAP 理论 C(Consistency) 一致性: 在写操作之后的所有读操作&#xff0c;必须要返回写入的值。 A(Availability) 可用性&#xff1a; 只要收到用户的请求&#xff0c;服务端就必须给出回应。 P(Partitio…

Spring的@Scheduled注解实现定时任务

Spring的Scheduled注解实现定时任务 【简介篇】 项目经常会用到定时任务&#xff0c;实现定时任务的方式有很多种。在Spring框架中&#xff0c;实现定时任务很简单&#xff0c;常用的实现方式是使用注解Scheduled。 Scheduled 常用来实现简单的定时任务。例如凌晨1点跑批&am…

接口测试如何测

接口测试如何测 一.什么是接口&#xff1f; 接口测试主要用于外部系统与系统之间以及内部各个子系统之间的交互点&#xff0c;定义特定的交互点&#xff0c;然后通过这些交互点来&#xff0c;通过一些特殊的规则也就是协议&#xff0c;来进行数据之间的交互。 二.接口都有哪…

CommandLineRunner 和 ApplicationRunner 的区别

CommandLineRunner 和 ApplicationRunner 概述 CommandLineRunner 和 ApplicationRunner 的作用类似, 都可以在 Spring 容器初始化之后执行某些操作。比较适用于某些复杂的 Bean 加载完成之后执行一些操作。例如 Feign 调用。 相同点 都可以获取到启动时指定的外部参数。主逻…

深入学习二叉树(一) 二叉树基础

深入学习二叉树(一) 二叉树基础 前言 树是数据结构中的重中之重&#xff0c;尤其以各类二叉树为学习的难点。一直以来&#xff0c;对于树的掌握都是模棱两可的状态&#xff0c;现在希望通过写一个关于二叉树的专题系列。在学习与总结的同时更加深入的了解掌握二叉树。本系列文…

ApplicationContext 和 BeanFactory 的区别

概述 首先解释一下两个名词: BeanFactory 是 Bean 工厂。ApplicationContext 是应用上下文。 ApplicationContext 和 BeanFactory 都是装载 Bean 的容器, 且 ApplicationContext 继承自 BeanFactory。但 ApplicationContext 较 BeanFactory 来说更高级一点。 主要区别: 是否…

深入学习二叉树(二) 线索二叉树

深入学习二叉树(二) 线索二叉树 1 前言 在上一篇简单二叉树的学习中&#xff0c;初步介绍了二叉树的一些基础知识&#xff0c;本篇文章将重点介绍二叉树的一种变形——线索二叉树。 2 线索二叉树 2.1 产生背景 现有一棵结点数目为n的二叉树&#xff0c;采用二叉链表的形式…

Java 逃逸分析

定义 分析对象动态作用域, 看别的方法或线程是否有途径能访问到这个对象。所谓逃逸分析,就是分析对象动态作用域,看别的方法或线程是否有途径能访问到这个对象,如果不能,那么编译器就可以为这个变量提供更高效的优化。 当一个对象, 能被其他方法访问到时, 这种逃逸叫做方法逃…

Java 线程调度

什么是线程调度 线程调度是指 OS 为线程分配处理器使用权的过程, 主要的调度方式有两种: 协同式线程调度。抢占式线程调度。 协同式线程调度 线程的执行时间由线程本身来控制, 线程把自己的工作执行完了之后,要主动通知 OS 切换到另一个线程上,即相当于在线程执行时间内能保…

深入学习二叉树(三) 霍夫曼树

深入学习二叉树(三) 霍夫曼树 1 前言 霍夫曼树是二叉树的一种特殊形式&#xff0c;又称为最优二叉树&#xff0c;其主要作用在于数据压缩和编码长度的优化。 2 重要概念 2.1 路径和路径长度 在一棵树中&#xff0c;从一个结点往下可以达到的孩子或孙子结点之间的通路&…