在Linux系统中,如果要删除文本中的重复行,可以如何做?
平时比较常用的方式是采用sort和uniq结合来处理.但如果要更进一步,根据文本中的某一列,而不是整行
来进行是否重复的判断,并对重复行进行删除,要如何做呢?
Google了一些资料,如下:
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不恰当。
相关推荐
本主题聚焦于一个特定的问题:如何高效地删除文本文件中的重复行。标题"文本文件,删除重复行"和描述指出,有一个用Pascal语言编写的程序,能够在极短的时间内完成这个任务。 首先,我们要理解什么是重复行。在文本...
由于文件内容中存在大量重复的“linux”、“linuxlinuxlinux”和“LinusTorvalds”等词汇,这可能是扫描文档时出现OCR识别错误所致。从可以辨认的内容看,这篇文档可能是关于Linux系统运维的资料。由于无法获得完整...
【描述】: "本资料旨在提供一个全面的Linux系统操作指南,涵盖日常使用、系统管理、命令行工具以及软件安装等多个方面,帮助用户深入理解和熟练掌握Linux环境下的工作流程。" 【标签】: "Linux系统", "命令行", ...
本篇文章将详细介绍Linux系统中VI指令的使用,帮助用户熟练掌握这个不可或缺的工具。 首先,让我们了解如何进入VI编辑器: 1. `vi filename`:打开或创建名为filename的文件,光标位于第一行首。 2. `vi +n ...
Linux系统中的Shell编程是一种强大的工具,它允许用户与操作系统进行交互,执行命令,自动化任务,以及编写复杂的脚本来实现各种功能。"shell编程"这个标签表明我们要深入理解Shell的编程概念。 首先,让我们来谈谈...
Linux系统中的vim编辑器是一个强大的文本编辑工具,广泛应用于各种Unix和Linux环境下。vim是vi的增强版,提供了更多的功能和便利性,尤其适合程序员进行代码编写。在使用vim时,掌握其三种基本模式——编辑模式、...
提供的文件“Linux命令学习.chm”、“Linux命令学习加Linux标准文本处理命令.pdf”和“Linux系统常用命令快速入门.pdf”将进一步帮助你理解和掌握这些知识点,是学习Linux操作的宝贵资源。请仔细阅读并不断练习,你...
Shell是Linux系统的命令行界面,它允许用户通过文本命令与操作系统交互。常见的Shell有Bash(Bourne-Again SHell)、Sh、Csh等。Bash是目前最常用的Shell,它提供了丰富的内置命令和脚本编程能力。 2. **常用Shell...
VI 编辑器是 Linux 系统中的一种文本编辑器,提供了许多实用的快捷键来提高用户的操作效率。本文将详细介绍 VI 编辑器中常用的快捷键,包括光标操作、添加文本、删除文本、修改文本、查找与替换和复制文本等方面。 ...
掌握VI的基本操作(如移动光标、编辑文本、保存和退出)是Linux系统管理员必备技能。 8. **权限与文件系统管理**:Linux采用严格的权限模型,包括所有者、组和其他用户的读、写、执行权限。了解chmod、chown和chgrp...
在PHP中删除文本文件中重复行的方法是一项常见的文本处理操作,对于文本数据清洗和数据预处理非常重要。在给定的文件中,详细介绍了如何通过编写PHP函数来实现这一功能,以下将详细阐述文件标题、描述以及部分正文...
在Linux系统中,最常见的Shell类型包括Bourne Shell (sh),Korn Shell (ksh),C Shell (csh)以及Bourne Again Shell (bash),其中bash是最常用的一种。 Shell编程的基础在于理解Shell命令。用户可以通过Shell命令与...
在深入探讨"Linux操作系统--实战模拟"这一主题之前,我们首先要理解Linux操作系统的本质。...通过这些实验室,学员将能够有效地应对Linux系统中遇到的各种问题,为未来的工作和项目奠定坚实的基础。
Linux操作系统是开源的类Unix系统,广泛应用于服务器、嵌入式设备...这些命令是Linux系统中的基本工具,熟练掌握它们能帮助用户高效地管理文件、目录以及系统状态。学习和实践这些命令对于提升Linux操作技能至关重要。
《c语言Linux系统编程进阶》一书深入探讨了在Linux环境下利用C语言进行系统级编程的高级技术。该书覆盖了从基础到高级的多个主题,包括源程序编译、Makefile的编写、程序库的链接、程序的调试、头文件与系统求助,...