IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> 一行命令实现 linux数组去重(原创) -> 正文阅读

[系统运维]一行命令实现 linux数组去重(原创)

一行命令实现 linux数组去重

网上关于数组的排序和去重大多都是写循环,如果数组很大,要耗费很多时间,这里借助linux本身的流处理命令,大大提高了运算的速度,也减少了代码的行数。

#--指定一个数组
b=(0 2 3 4 5 2 3 4 5 6 1 0)
#--数组去重
c=(`echo ${b[@]}|sed -e 's/ /\n/g'|sort -nu|sed -e ':a;N;s/\n/ /g;ta'`)
#--打印输出,检验结果
echo ${c[@]} #0 1 2 3 4 5 6
echo ${#c[@]} #7

下面解释一下命令的处理原理:

1 echo 打印数组;

2 sed命令将打印的数组中空格分隔符替换为\n换行符,这一步是为了方便sort命令进行排序和去重,因为sort命令一般用用于文件去重,需要以行为单位;

3 sort 命令先排序再去重,-n按照数字类型排序,-u取代了uniq的功能,直接去除重复行;

4 sed命令将\n再变回空格分隔符号
----关于这个命令要详细解释一下::a 和ta 是一对符号,:a是先做一个标记,然后如果ta之前执行成功,则跳转到:a标识符继续执行,达到了循环的效果;
----N则是把后一行合并到当前行,因为\n分隔的字符串在sed中是一行一行处理的,没法直接将每一行末尾的\n替换(即\n被当作的行的分隔符),所以要先合并下一行,然后替换其中的\n为空格;

5 第四步得到的只是一个空格分隔的字符串,如果需要的是一个数组,则需要在外面扩个括号,就成功得到了一个去重后的数组.

补充:前面的数组比较短,可能体现不出和循环处理方式的区别,这里补一个比较大的数组,差异就看出来了:

#--指定一个20万个元素组成的数组
b=(`seq 1 100000` `seq 100000 1`)
#--数组去重(仅仅需要几秒钟,如果是写嵌套循环比较,不知道要多久了)
c=(`echo ${b[@]}|sed -e 's/ /\n/g'|sort -nu|sed -e ':a;N;s/\n/ /g;ta'`)
#--打印输出,检验结果
echo ${c[@]} #1-100000
echo ${#c[@]} #100001

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-08-16 12:07:58  更:2021-08-16 12:09:37 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 10:00:53-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码