`

Linux系统下如何删除文本中的重复行

阅读更多

      在Linux系统中,如果要删除文本中的重复行,可以如何做?

      平时比较常用的方式是采用sort和uniq结合来处理.但如果要更进一步,根据文本中的某一列,而不是整行

来进行是否重复的判断,并对重复行进行删除,要如何做呢?

      Google了一些资料,如下:

      1. 枪声依旧 Linux下利用awk进行文本统计

      2. sed与awk去除重复行

      3. awk 不排序删除重复行

 

      其中,在1)中,介绍了下面这种方法来解决上面提出的问题:

awk '!a[$0]++' src.txt > dest.txt 

 

      而对这种方法的解释,在3)做了描述,下面是一段转贴:

 简要解释一下,awk 的基本执行流程是,对文件的每一行,做一个指定的逻辑判断,如果逻辑判断成立,则执行指定的命令;如果逻辑判断不成立,则直接跳过这一行。

我们这里写的 awk 命令是 !x[$0]++,意思是,首先创建一个 map 叫 x,然后用当前行的全文 $0 作为 map 的 key,到 map 中查找相应的 value,如果没找到,则整个表达式的值为真,可以执行之后的语句;如果找到了,则表达式的值为假,跳过这一行。由于表达式之后有 ++,因此如果某个 key 找不到对应的 value,该 ++ 操作会先把对应的 value 设成 0,然后再自增成 1,这样下次再遇到重复的行的时候,对应的 key 就能找到一个非 0 的 value 了。

注:该处的map类似于array数组,只不过在awk中叫array不恰当。

分享到:
评论

相关推荐

    linux系统vim实验报告.doc

    关于文本编辑器 vim 的使用 【注】里面的内容和自己跟着敲敲,文件名字换成自己的,可以套用我的模板和前言结论,代码最好跟着敲敲,里面的操作步骤我也说的...4.文本的查找,撤销与重复。 【注】原创文章,请勿转载

    Linux操作系统基础教程

    Linux 操作系统基础教程 清华大学信息学院计算机系 目 录 前言..........................................................................................................................................

    基于C_S的学生信息管理系统_linux平台_C语言

    2. 老师和学生的信息使用单链表保存,服务器端关闭后保存至硬盘的文本文件中 3. 使用socket实现客户端和服务器端的通信,服务器端采用多线程技术实现多用户同时登陆 4. 服务端采用互斥锁进行数据的保护及用户的互斥...

    linux操作系统基础教程

    1.3 Red Hat Linux系统安装 ···························· ···························· ························ ·····...

    redhat linux教材20课程学习文档

    第二章 Linux系统基本原理 2.1 Linux的体系结构以图来表现 2.2 基本特点 2.2.1 单核心 2.2.2 多用户的操作系统 2.2.3 分时机制 2.2.4 多任务运行 2.3 核心与模块(模块分类、进程,核心结构图) 2.4 文件系统的基本...

    linux.chm文档

    chattr +u file1 若文件被删除,系统会允许你在以后恢复这个被删除的文件 lsattr 显示特殊的属性 返回顶部索引 ^ 打包和压缩文件 bunzip2 file1.bz2 解压一个叫做 'file1.bz2'的文件 bzip2 file1 压缩一个叫做...

    linux 面试题 (附答案)

    5.在vi编辑器中的命令模式下,重复上一次对编辑的文本进行的操作,可使用 C 命令。 A 上箭头 B 下箭头 C ; D <*>; 6.用命令ls -al显示出文件ff的描述如下所示,由此可知文件ff的类型为 A 。 -rwxr-xr-- 1 root ...

    RED HAT LINUX 6大全

    6.4 关闭Linux系统 98 6.4.1 shutdown 98 6.4.2 halt与reboot 99 6.5 当系统崩溃时 100 6.5.1 以root身份运行 100 6.5.2 创建引导盘 100 6.5.3 误删除文档 101 6.5.4 文件工具箱 101 6.5.5 当系统不能引导时,Red ...

    定制U盘Linux系统总结报告

    容量大,数据传输速度快,携带方便,数据易于修改,可多次重复使用。另外,制作好一个 USB 安装盘后,可以在 Windows 下克隆出很多个安装盘,一般的操作者都能够完成这个工 作,方法很简单。 本文档包括: 1 u盘启动盘的...

    linux管理员指南

    第2章介绍Linux的安装过程,但是又有一些独到的内容:我们没有机械地重复软件本身提供的安装事项,而是帮助你把Linux系统专门配置成为一台作为服务器使用的计算机。第3章继续介绍安装过程,讲述如何设置两种Linux...

    linux vi 常用命令

    当然,对UNIX系统略有所知的人, 或多或少都觉得vi超级难用,但vi是最基本的编辑器,所以希望读者能好好把它学起来,以后在UNIX世界里必将畅行无阻、 游刃有余,因为其他几种文本处理器并非UNIX标准配备。...

    安卓系统下的bash shell,ssh服务器,gcc编译器以及vim文本编辑器等

    安卓系统下的bash shell,ssh服务器,gcc编译器以及vim文本编辑器等 使用vim编辑多个文件 vim file1 file2 file3 ... :next查看或编辑后一个文档的内容 :prev查看或编辑前一个文档的内容 :first查看或...

    Linux-0.11 [内核源代码带中文注释]

    在Linux 中软驱的主设备号是2(参见第43 行的注释),次设备号 = type*4 + nr,其中 ! nr 为0-3 分别对应软驱A、B、C 或D;type 是软驱的类型(2??1.2M 或7??1.44M 等)。 ! 因为7*4 + 0 = 28,所以 /dev/PS0 (2,28)...

    重复文件清理工具(含源代码C#)

    其实Window的NTFS文件系统也支持文件硬链接的(CreateHardLink),现在就提供一个工具,以相似的文件名为基础,查找重复的文件,我们 忽略(1) 这样的重复模式文本(正则表达式为: @"(\s)|复件|\((\d)+\)"),把重复...

    Linux指令一周通 (技术图书大系).azw3

    6.48 up2date指令:更新Linux系统 6.49 vmstat指令:显示虚拟内存空间 第7天 其他常见指令 7.1 as指令:标准GNU汇编程序 7.2 autoconf指令:产生配置脚本 7.3 autoheader指令:为configure产生模板头文件 7.4 ...

    LINUX/UNIX Shell编程大作业

    在Linux系统的/etc目录下有这样一个文件passwd,该文件里包含系统中所有用户信息的记录,记录里包含每个用户的如下信息:用户名、密码、用户ID、组ID、用户全名、用户主目录和用户登录所用的shell。请设计一个脚本...

    Linux高级语言及管理编程

    在DOS 中,你可能会从事一些例行的重复性命令,此时你会将这些重复性的命令写成批 处理命令,只要执行这个批处理命令就等于执行这些命令。在 L i n u x系统中也有类似的批处理 命令,它的功能比起D O S的批处理命令...

    功能超级强悍的文本编辑器 PilotEdit 14.3.0 + x64 中文多语免费版.zip

    支持文本编辑,比较,FTP编辑,FTP上传下载,加密,十六进制编辑,列模式,回行显示,正则表达式,多行查找和替换,代码折叠,关键字高亮显示,编辑400GB的大文件,比较100GB的大文件,对超过1G的大文件排序,删除...

    LINUX与UNIX SHELL编程指南(很全)

    7.4 使用*匹配字符串中的单字符或其重复 序列 51 7.5 使用\屏蔽一个特殊字符的含义 52 7.6 使用[]匹配一个范围或集合 52 7.7 使用\{\}匹配模式结果出现的次数 53 7.8 小结 55 第8章 grep家族 56 8.1 grep 57 8.1.1 ...

    borg-macosx64 borgbackup: 1.1.11 重复数据删除备份程序

    与其他重复数据删除方法相比,此方法不依赖于:文件/目录名称保持不变:因此,即使在共享回购协议的机器之间,您也可以在不终止重复数据删除的情况下移动内容。完整的文件或时间戳保持不变:如果大文件发生了一些...

Global site tag (gtag.js) - Google Analytics