iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Shell中怎么实现文本去重操作
  • 172
分享到

Shell中怎么实现文本去重操作

2023-06-09 18:06:44 172人浏览 薄情痞子
摘要

这期内容当中小编将会给大家带来有关shell中怎么实现文本去重操作,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。代码如下:ccccaaaabbbbDDDdbbbbccccaaaa现在需要对它进行去重处理,

这期内容当中小编将会给大家带来有关shell中怎么实现文本去重操作,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

代码如下:

cccc
aaaa
bbbb
DDDd
bbbb
cccc
aaaa


现在需要对它进行去重处理,这个很简单,sort -u就可以搞定,但是如果我希望保持文本原有的顺序,比如这里有两个aaaa,我只是希望去掉第二个aaaa,而第一个aaaa在bbbb的前面,去重后仍旧要在它前面,所以我期望的输出结果是

代码如下:


cccc
aaaa
bbbb
dddd


当然,这个问题本身并不难,用c++python写起来都很容易,但所谓杀机焉用牛刀,能用shell命令解决时,它永远都是我们的首选。答案在最后给出,下面说说我是如何想到这样

我们有时候想把自己的目录加入环境变量PATH时会在~/.bashrc文件中这样写,比如待加入的目录为$HOME/bin

代码如下:


export PATH=$HOME/bin:$PATH


这样我们等于是在PATH追加了路径$HOME/bin并让它在最前面被搜索到,但当我们执行source ~/.bashrc后,$HOME/bin目录就会被加入PATH,如果我们下次再添加一个目录,比如

代码如下:


export PATH=$HOME/local/bin:$HOME/bin:$PATH


再执行source ~/.bashrc时,$HOME/bin目录在PATH中其实会有两份记录,虽然这不影响使用,但对于一个强迫症来说,这是无法忍受的,于是问题就变成了,我们需要去掉$PATH里重复的路径,并且保持原有路径顺序不变,也就是原本谁在前面,去重后仍旧在前面,因为在执行shell命令时是从第一个路径开始查找的,所以顺序很重要

好了,说了这么多我们来揭示最终的结果,以文章开始的数据为例,假设输入文件是in.txt,命令如下

代码如下:


cat -n in.txt | sort -k2,2 -k1,1n | uniq -f1 | sort -k1,1n | cut -f2-


这些都是很简单的shell命令,下面稍作解释

代码如下:


cat -n in.txt : 输出文本,并在前面加上行号,以\t分隔
sort -k2,2 -k1,1n : 对输入内容排序,primary key是第二个字段,second key是第一个字段并且按数字大小排序
uniq -f1 : 忽略第一列,对文本进行去重,但输出时会包含第一列
sort -k1,1n : 对输入内容排序,key是第一个字段并按数字大小排序
cut -f2- : 输出第2列及之后的内容,默认分隔符为\t

大家可以从第一条命令开始,并依次组合,看看实际输出效果,那样便更容易理解了。对于$PATH中的重复路径又该如何处理呢,还是以前面的例子来说,只需在前后用tr做一下转换即可

代码如下:


export PATH=$HOME/local/bin:$HOME/bin:$PATH
export PATH=`echo $PATH | tr ':' '\n' | cat -n | sort -k2,2 -k1,1n | uniq -f1 | sort -k1,1n | cut -f2- | tr '\n' ':'`


其实这样使用PATH会有个问题,比如我们执行了以上命令后,如果想去掉$HOME/bin这个路径,仅仅修改为如下内容是不够的

代码如下:


export PATH=$HOME/local/bin:$PATH
export PATH=`echo $PATH | tr ':' '\n' | cat -n | sort -k2,2 -k1,1n | uniq -f1 | sort -k1,1n | cut -f2- | tr '\n' ':'`


因为我们已经将$HOME/bin加入了$PATH中,这样做并没有起到删除的作用,也许最好的方式还是自己清楚的知道所有路径,然后显示指定,而不是采取追加的方式

上述就是小编为大家分享的Shell中怎么实现文本去重操作了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注编程网精选频道。

--结束END--

本文标题: Shell中怎么实现文本去重操作

本文链接: https://www.lsjlt.com/news/257168.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Shell中怎么实现文本去重操作
    这期内容当中小编将会给大家带来有关Shell中怎么实现文本去重操作,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。代码如下:ccccaaaabbbbddddbbbbccccaaaa现在需要对它进行去重处理,...
    99+
    2023-06-09
  • Shell实现文本去重并操持原有顺序
    简单来说,这个技巧对应的是如下一种场景 假设有文本如下 cccc aaaa bbbb dddd bbbb cccc aaaa 现在需要对它进行去重处理,这个很简单,sort -u就可以搞定,...
    99+
    2022-06-04
    顺序 文本 Shell
  • javascript中去重操作怎么使用
    本篇内容主要讲解“javascript中去重操作怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“javascript中去重操作怎么使用”吧!核心的基本算法    &nb...
    99+
    2023-06-30
  • VB.NET中怎么实现读写文本文件操作
    VB.NET中怎么实现读写文本文件操作,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。VB.NET读写文本文件为了把text保存到文件,创建一个基于FileStream的Stre...
    99+
    2023-06-17
  • Python怎么实现文件自动去重
    这篇文章主要介绍Python怎么实现文件自动去重,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Python 文件自动去重平日里一来无聊,二来手巧,果然下载了好多无(luan)比(qi)珍(ba)贵(zao)的资料,搞...
    99+
    2023-06-15
  • C#中怎么操作文本文件
    这篇文章给大家介绍C#中怎么操作文本文件,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。C#操作文本文件演练实例浅析 using System;  using Syste...
    99+
    2023-06-17
  • VB.NET中怎么操作文本文件
    今天就跟大家聊聊有关VB.NET中怎么操作文本文件,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。在.NET里的System.IO.File和System.IO.FileInfo里的O...
    99+
    2023-06-17
  • JavaScript中怎么实现数组去重
    这篇文章主要介绍了JavaScript中怎么实现数组去重,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。具体如下:数组去重,一般都是在面试的时...
    99+
    2022-10-19
  • 大数据中文本怎么按行去除重复值
    这篇文章跟大家分析一下“大数据中文本怎么按行去除重复值”。内容详细易懂,对“大数据中文本怎么按行去除重复值”感兴趣的朋友可以跟着小编的思路慢慢深入来阅读一下,希望阅读后能够对大家有所帮助。下面跟着小编一起深入学习“大数据中文本怎么按行去除重...
    99+
    2023-06-03
  • C#中怎么实现操作符重载
    C#中怎么实现操作符重载,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。C#操作符重载学习实践操作using System;  using&nb...
    99+
    2023-06-17
  • PyQt5中使用QtDesigner怎么实现文本框读写操作
    PyQt5中使用QtDesigner怎么实现文本框读写操作?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。主要内容:读、写 输入控件(Input Widgets)...
    99+
    2023-06-15
  • java中怎么实现List集合去重
    本篇内容介绍了“java中怎么实现List集合去重”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!前言:List 去重指的是将 List 中的...
    99+
    2023-06-30
  • MySQL 中怎么实现可重复读操作
    这篇文章将为大家详细讲解有关MySQL 中怎么实现可重复读操作,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。账户表(省去其他字段)结构如下:CREATE&n...
    99+
    2022-10-18
  • VB.NET中怎么实现文件操作
    VB.NET中怎么实现文件操作,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1、VB.NET文件操作之判断光驱的盘符:FunctionGetCDROM()\'返回光驱的...
    99+
    2023-06-17
  • mysql中怎么操作文本数据
    这篇文章给大家介绍mysql中怎么操作文本数据,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。一、 建立测试表,准备数据 首先建立一个用于测试的表示学生信息的表,字段有id、姓名、年龄、...
    99+
    2022-10-18
  • SHELL中怎么操作子目录文件列表
    本篇文章给大家分享的是有关SHELL中怎么操作子目录文件列表,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。需求:/home/file1/free这个目录底下,有部分子目录有li...
    99+
    2023-06-13
  • Python中怎么实现列表去重复项
    Python中怎么实现列表去重复项,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。方式## 1. 新建列表,如果新列表中不存在,则添加到新列表。 ...
    99+
    2023-06-16
  • PHP中怎么实现目录操作和文件操作
    今天就跟大家聊聊有关PHP中怎么实现目录操作和文件操作,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。一、目录操作首先介绍的是一个从目录读取的函数,opendir(),readdir(...
    99+
    2023-06-17
  • SQL Server中怎么实现文件操作
    本篇文章为大家展示了SQL Server中怎么实现文件操作,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。一,判断文件是否存在存储过程sys.xp_fileexist...
    99+
    2022-10-18
  • C++中怎么实现文件流操作
    本篇文章给大家分享的是有关C++中怎么实现文件流操作,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。C++文件流操作之文件写入:#include < f...
    99+
    2023-06-17
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作