原始文本文件

$ cat test
jason
jason
jason
fffff
jason

方法一:sort -u

去除重复后

sort -u test
fffff
jason

注意顺序被打乱

方法二:sort test|uniq

去除重复后

$sort test |uniq
fffff
jason

注意顺序被打乱,原理和方法一雷同

方法三:awk '!a[$0]++'

去除重复后

$ awk '!a[$0]++' test
jason
fffff

顺序保持不变,文件去重示例

awk '!a[$0]++' test.txt >test.txt.tmp && mv -f test.txt.tmp test.txt

此处awk使用一个临时文件过度结果

具体原理如下:

awk的程序指令由模式和操作组成,即Pattern { Action }的形式,如果省略Action,则默认执行 print $0 的操作。

  实现去除重复功能的就是这里的Pattern:

!a[$0]++

  在awk中,对于未初始化的数组变量,在进行数值运算的时候,会赋予初值0,因此a[$0]=0,++运算符的特性是先取值,后加1,因此Pattern等价于

!0

  而0为假,!为取反,因此整个Pattern最后的结果为1,相当于if(1),Pattern匹配成功,输出当前记录,对于dup文件,前3条记录的处理方式都是如此。

  当读取第2行数据“jason”的时候,a[$0]=1,取反后的结果为0,即Pattern为0,Pattern匹配失败,因此不输出这条记录,后续的数据以此类推,最终成功实现去除文件中的重复行。

linux shell 文件去除重复行相关推荐

  1. linux排列去重复的命令,实例详细说明linux下去除重复行命令uniq

    一,uniq干什么用的 文本中的重复行,基本上不是我们所要的,所以就要去除掉.linux下有其他命令可以去除重复行,但是我觉得uniq还是比较方便的一个.使用uniq的时候要注意以下二点 1,对文本操 ...

  2. python3 文本文件内容去除重复行

    环境:python3.8 import shutil# 文件去除重复行 def remove_duplicates(path):lines_seen = set()outfile = open(f&q ...

  3. linux去除文件中重复行,Linux Shell教程 - 如何删除重复的文本行

    需要对日志文件中的数据进行排序,但是有太多重复的行. 如何从GNU/Linux下的文本文件中删除所有重复的行? 您需要使用shell管道以及以下两个Linux命令行实用程序来排序和删除重复的文本行: ...

  4. linux多个文件删除重复行,shell中删除文件中重复行的方法

    Linux下文本处理工具很丰富很强大,例如这样一个文件: cat log www.jb51.net 192.168.1.1 www.jb51.net 192.168.1.1 www.jb51.net ...

  5. menisa mysql_实例详细说明linux下去除重复行命令uniq

    一,uniq干什么用的 文本中的重复行,基本上不是我们所要的,所以就要去除掉.linux下有其他命令可以去除重复行,但是我觉得uniq还是比较方便的一个.使用uniq的时候要注意以下二点 1,对文本操 ...

  6. shell脚本--awk数组实现去除重复行

    去除重复行的方法有很多,这里介绍三种. 测试文本: [root@172-0-10-222 myscripts]# cat testfile andy 123456 hanna 123456 hello ...

  7. 文本 去除重复行(sublime Text3 ,正则表达式)

    文本 去除重复行(sublime Text3 ,正则表达式) 去除重复行的方法很多,这里通过正则表达式实现: 农林牧渔子类 农林牧渔子类 农林牧渔子类 农林牧渔子类 卫生和社会工作子类 卫生和社会工作 ...

  8. Pandas 模块-操纵数据(8)-去除重复行 .drop_duplicates()

    目录 8. 去除重复行 .drop_duplicates() 8.1 .drop_duplicates() 语法 8.1.1 .drop_duplicates() 语法结构 8.1.2 .drop_d ...

  9. Linux 打印文件某几行

    有这样的面试题:Linux 打印文件第 10-20 行. 在此之前,先造一点数据用于打印测试吧: i=1;while [ $i -le 100 ];do echo "$i 行,测试测试,ov ...

最新文章

  1. Arm 十年重磅发布 v9 架构,不受 EAR 约束,未来将覆盖 3000 亿颗芯片
  2. 精通python设计模式-Python设计模式
  3. 多家大厂接连停产,半导体“最后一里路”面临“瘫痪”?
  4. timerfd与epoll
  5. MVC防止xss攻击 ——Html.AntiForgeryToken的AJAX提交
  6. Visual Studio生成汇编列表文件(listing file)
  7. 数据科学 IPython 笔记本 8.13 自定义刻度
  8. 关于PHOTO SHOP CS9.0无法启动adobe updater 请重新安装应用程序和组件解决方法!
  9. composer 无法更新vonder
  10. Android WindowManagerImpl杂谈
  11. (转)左耳朵耗子:技术人如何更好地把控发展趋势?
  12. Fiddler-本机抓包模拟器
  13. mac 如何安装 wget
  14. 2022-2027年中国沙漠旅游行业市场全景评估及发展战略规划报告
  15. 用算法判断输入的一个数是几位数
  16. 安卓手机如何打开.crx文件_crx文件怎么打开
  17. 网络技术大讲堂:什么是IPv6+?
  18. [rust-003] rust by example学习过程点点滴滴杂记
  19. Tableau :蝴蝶图
  20. win7开机启动项设置_Win7系统电脑使用注册表查看开机启动项操作方法

热门文章

  1. 调整体态的最佳瑜珈调息法
  2. python中id3决策树算法_ID3决策树算法实现(Python版)
  3. C 语言编程 — size_t 的意义与作用
  4. 用 Flask 来写个轻博客 (24) — 使用 Flask-Login 来保护应用安全
  5. Python基本语法_基本数据类型_数值型详解
  6. NanoPi NEO Air使用八:编写个简单的驱动和应用程序
  7. j-link接口定义及实际使用
  8. TCP/IP协议概述
  9. NR 5G 零基础看5G
  10. 电脑图片不显示缩略图怎么办