首页 帮助中心 香港云服务器 Linux中删除重复文件的常用命令有哪些
Linux中删除重复文件的常用命令有哪些
时间 : 2024-11-25 16:17:40 编辑 : 华纳云 阅读量 : 38

在Linux使用中,有时候需要删除重复文件可以通过多种命令工具来实现,常用方法有sort和uniq组合、awk和sed等。具体内容如下!

如果是用sort和uniq组合命令。sort的作用是对文件进行排序,而uniq是实现过滤掉目录的重复行。组合使用就是先对文件排序再删除重复行:

sort input.txt | uniq > output.txt

其中input是输入文件名,output.txt是输出文件名。含删除重复行后的内容。

还有一种情况,是想保留文件当前的顺序,再进行删除重复文件。可以使用sort命令的-u选项(对文件进行排序删除重复行,但是不改变原始文件顺序),也可以直接用awk或者perl来实现:

awk '!seen[$0]++' input.txt > output.txt

awk是一种强大文本处理工具,华纳云之前也给大家分享过。awk用于删除重复行:

awk '!seen[$0]++' input.txt > output.txt

!seen[$0]++是一种常见的模式,用于跟踪每一行是否已经出现过。如果某行第一次出现时,seen[$0]的值0,取反后为1,所以会执行对应的操作将该行打印输出。行的seen[$0]值增加1,1以前,遇到该行的时候,!seen[$0]为0,不会因此再打印。

使用sed命令来删除重复行。sed是一种流编辑器,能处理文本流,通过结合sed和一些其他命令删除重复行:

sed '$!N; /^\(.*\)\n\1$/!P; D' input.txt > output.txt

以上命令会在sed模式空间中一次读取两行,当出现两行相同时候会删除其中一行。

使用perl命令,perl是一种强烈的脚本语言,也可支持文本处理:

perl -ne 'print unless $seen{$_}++' input.txt > output.txt

print unless $seen{$_}++会在第一次遇到该行时打印该行,将该行标记为已见过。之后再次遇到该行时,就不会打印了。如一个含重复行的input.txe文件:

apple

banana

apple

orange

banana

grape

使用以上任意方法删除重复项后,putput.txt包含:

apple

banana

orange

grape

以上使用方法都各有优势,根据实际需求来选择。常见的使用方法是sort和uniq组合,如果是要保留原始顺序,awk命令会更合适。

华纳云 推荐文章
Linux中Curl命令使用技巧有哪些 RHEL系统中NTP安装和配置的步骤 ubuntu服务器怎么进行磁盘管理? PowerShell的Copy-Item命令能复制哪些内容 CentOS中怎么安装 OpenNMS 网络监控工具 Prometheus的关键特性和应用方法 Linux云服务器搭建电子商务网站的方法 Linux服务器拒绝发送离线文件怎么解决 路由网络中旁路由网络设置方法 教你如何故障排查DNS服务器未响应
客服咨询
7*24小时技术支持
技术支持
渠道支持