Linux系统sort排序与uniq去重

2024-06-11 00:36
文章标签 linux 系统 排序 sort uniq

本文主要是介绍Linux系统sort排序与uniq去重,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Linux系统sort排序与uniq去重

工作中数据太多太杂,不便于查看分析。这时是可以采用sort将数据排序,同时可以配合uniq命令进行去重。

场景:云平台中,日常工作包含巡检工作,是通过事先编写好的巡检脚本去检测云平台的和Node节点(Linux系统)的健康情况。有问题的信息会打印保存在日志中,这里面包含了很多IP(Node),而且具有大量重复IP(成百上千个IP等)。

为了定位到哪些Node节点存在问题以及都有什么问题。为了便于分析查看,需要对其IP进行排序以及去重处理。

sort 命令

sort 命令用于对文本数据进行排序

基本语法

1sort [选项]... [文件名]

如果没有指定文件名,sort 命令会从标准输入(stdin)读取数据,这使得它能够方便地与其他命令通过管道(|)组合使用

常用选项

  • -n:按数值大小进行排序
  • -r–reverse:逆序排序
  • -t:指定分隔符,用于字段排序(例如 -t',' 使用逗号作为分隔符)
  • -k:指定排序的字段,格式为 -kN[,M],其中 N 是字段编号,M 可选,表示排序结束的字段,可以用于排序跨越多个字段
  • -u–unique:输出唯一行,去除重复行
  • -m–merge:合并已排序的文件
  • -o:将排序结果输出到文件而不是标准输出,例如 -o sorted.txt

示例

  • 简单排序:按字母顺序排序文件内容

    $ cat file.txt
    d
    c
    b
    a
    h
    e
    # 字母顺序
    $ sort file.txt
    a
    b
    c
    d
    e
    h
    
  • 数值排序:按数值从小到大排序

    $ cat values.txt
    23
    123
    456
    88
    21
    3
    # 按数值从小到大排序
    $ sort -n values.txt
    3
    21
    23
    88
    123
    456
    
  • 逆序排序:按字母顺序逆序排序

    $ cat file.txt
    d
    c
    b
    a
    h
    j
    e
    q
    e
    # 按字母顺序逆序排序
    $ sort -r file.txt
    q
    j
    h
    e
    e
    d
    c
    b
    a
    
  • 字段排序:按文件中第二列排序

    $ cat students.txt
    Alice,90
    Bob,85
    Charlie,92
    David,88
    Eva,95
    Alice,87
    # 按文件中第二列排序
    $ sort -t ',' -n -k2 students.txt
    Bob,85
    Alice,87
    David,88
    Alice,90
    Charlie,92
    Eva,95
    
  • 去重并排序:先去重后排序

    $ sort -u input.txt | sort
    2
    3
    e
    # 先去重后排序
    $ cat input.txt
    e
    e
    2
    2
    3
    3
    

uniq 命令

uniq 命令,用于去除文件中的重复内容行

基本用法

  • 语法:

    uniq [选项]... [输入文件]
    
  • 特点:

    • 默认情况下,uniq 只能识别并处理相邻的重复行。这意味着在处理文件之前,如果要删除所有重复行而不考虑它们的位置,通常需要先使用 sort 命令对文件进行排序。
    • 如果不指定输入文件,uniq 会从标准输入(stdin)读取数据,这使得它能很好地与其他命令通过管道(|)结合使用。

常用选项

  • -c–count:在每行前加上该行在输入中出现的次数。
  • -d–repeated:只显示重复的行。
  • -u–unique:只显示唯一的行,即不重复的行。
  • -i–ignore-case:忽略大小写差异。
  • -f N–skip-fields=N:跳过每行开始的N个字段。
  • -s N–skip-chars=N:跳过每行开始的N个字符。
  • -w N–check-chars=N:仅比较每行的前N个字符。

示例

  1. 删除相邻的重复行

    $ cat  input.txt
    e
    e
    2
    2
    3
    3
    # 删除相邻的重复行
    $ uniq input.txt
    e
    2
    3
    
  2. 统计每行出现次数

    $ cat  input.txt
    e
    e
    2
    2
    3
    3
    $ uniq -c input.txt2 e2 22 3
    
  3. 只显示唯一的行

    $ cat input.txt
    e
    e
    2
    2
    3
    3
    ww
    # 只显示唯一的行
    $ uniq -u input.txt
    ww
    
  4. 结合 sort 去除所有重复行

    $ cat data.txt
    apple
    banana
    orange
    apple
    grape
    banana
    cherry# 结合 sort 去除所有重复行
    $ sort data.txt | uniq > unique_data.txt
    $ cat unique_data.txt
    apple
    banana
    cherry
    grape
    orange
    
  5. 忽略大小写去重

    $ cat names.txt
    Alice
    alice
    Bob
    bob
    Charlie
    charlie
    Alice
    # 忽略大小写去重
    $ sort -f names.txt | uniq -i
    Alice
    Bob
    Charlie
    

End

这篇关于Linux系统sort排序与uniq去重的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


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

相关文章

Windows 系统下 Nginx 的配置步骤详解

《Windows系统下Nginx的配置步骤详解》Nginx是一款功能强大的软件,在互联网领域有广泛应用,简单来说,它就像一个聪明的交通指挥员,能让网站运行得更高效、更稳定,:本文主要介绍W... 目录一、为什么要用 Nginx二、Windows 系统下 Nginx 的配置步骤1. 下载 Nginx2. 解压

Linux基础命令@grep、wc、管道符的使用详解

《Linux基础命令@grep、wc、管道符的使用详解》:本文主要介绍Linux基础命令@grep、wc、管道符的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录grep概念语法作用演示一演示二演示三,带选项 -nwc概念语法作用wc,不带选项-c,统计字节数-

如何确定哪些软件是Mac系统自带的? Mac系统内置应用查看技巧

《如何确定哪些软件是Mac系统自带的?Mac系统内置应用查看技巧》如何确定哪些软件是Mac系统自带的?mac系统中有很多自带的应用,想要看看哪些是系统自带,该怎么查看呢?下面我们就来看看Mac系统内... 在MAC电脑上,可以使用以下方法来确定哪些软件是系统自带的:1.应用程序文件夹打开应用程序文件夹

windows系统上如何进行maven安装和配置方式

《windows系统上如何进行maven安装和配置方式》:本文主要介绍windows系统上如何进行maven安装和配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不... 目录1. Maven 简介2. maven的下载与安装2.1 下载 Maven2.2 Maven安装2.

Linux CPU飙升排查五步法解读

《LinuxCPU飙升排查五步法解读》:本文主要介绍LinuxCPU飙升排查五步法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录排查思路-五步法1. top命令定位应用进程pid2.php top-Hp[pid]定位应用进程对应的线程tid3. printf"%

Linux下安装Anaconda3全过程

《Linux下安装Anaconda3全过程》:本文主要介绍Linux下安装Anaconda3全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录简介环境下载安装一、找到下载好的文件名为Anaconda3-2018.12-linux-x86_64的安装包二、或者通

使用Python实现Windows系统垃圾清理

《使用Python实现Windows系统垃圾清理》Windows自带的磁盘清理工具功能有限,无法深度清理各类垃圾文件,所以本文为大家介绍了如何使用Python+PyQt5开发一个Windows系统垃圾... 目录一、开发背景与工具概述1.1 为什么需要专业清理工具1.2 工具设计理念二、工具核心功能解析2.

Linux系统之stress-ng测压工具的使用

《Linux系统之stress-ng测压工具的使用》:本文主要介绍Linux系统之stress-ng测压工具的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、理论1.stress工具简介与安装2.语法及参数3.具体安装二、实验1.运行8 cpu, 4 fo

Linux lvm实例之如何创建一个专用于MySQL数据存储的LVM卷组

《Linuxlvm实例之如何创建一个专用于MySQL数据存储的LVM卷组》:本文主要介绍使用Linux创建一个专用于MySQL数据存储的LVM卷组的实例,具有很好的参考价值,希望对大家有所帮助,... 目录在Centos 7上创建卷China编程组并配置mysql数据目录1. 检查现有磁盘2. 创建物理卷3. 创

Linux查看系统盘和SSD盘的容量、型号及挂载信息的方法

《Linux查看系统盘和SSD盘的容量、型号及挂载信息的方法》在Linux系统中,管理磁盘设备和分区是日常运维工作的重要部分,而lsblk命令是一个强大的工具,它用于列出系统中的块设备(blockde... 目录1. 查看所有磁盘的物理信息方法 1:使用 lsblk(推荐)方法 2:使用 fdisk -l(