linux之使用uniq删除重复内容

uniq命令用于删除文本文件中连续重复的行,结合sort命令可以有效统计非连续重复行。-i选项忽略大小写,-c选项显示重复行的计数。注意uniq只对比相邻行,若需删除所有重复行,需先用sort排序。

uniq: 如果文件中有多行完全相同的内容,那么uniq能删除重复的行且还能统计出完全相同的行出现的次数。使用的语法如下:

uniq [-ic]

常用参数使用说明:
-i: 忽略大小写
-c: 计算重复行数

uniq命令使用的数据如下:
在这里插入图片描述

uniq命令使用需要注意的是:该命令只会对比相邻的行,如果有连续相同的若干行则删除重复内容,仅输出一行。如果相同的行不连续,则该命令不具备删除效果。 例如:
在这里插入图片描述
由此可知,uniq一般都需要和sort命令使用。
在这里插入图片描述
统计重复的内容的行数:
在这里插入图片描述

Linux系统中删除文件中的重复内容,可以使用多种方法,包括命令行工具和脚本编写。以下是一些常用的方法: ### 使用 `sort` 和 `uniq` 命令 1. **`sort` 命令**:首先对文件内容进行排序,因为 `uniq` 命令只能处理已排序的数据。 ```bash sort filename.txt > sorted_filename.txt ``` 2. **`uniq` 命令**:用于去除相邻的重复行。 ```bash uniq sorted_filename.txt unique_filename.txt ``` 如果需要保留唯一行,可以使用 `-u` 选项;如果需要只显示重复行,可以使用 `-d` 选项。 ### 使用 `awk` 命令 `awk` 是一种强大的文本处理工具,可以直接用来删除重复行。 ```bash awk '!seen[$0]++' filename.txt > unique_filename.txt ``` 这个命令会读取每一行,并将其作为键存储在数组 `seen` 中。如果该行没有出现过,则输出该行。 ### 使用 `perl` 脚本 Perl 脚本也可以用来删除文件中的重复行。 ```bash perl -ne 'print unless $seen{$_}++' filename.txt > unique_filename.txt ``` 这段脚本的工作原理与 `awk` 类似,它通过哈希表来跟踪已经见过的行。 ### 使用 `sed` 命令 虽然 `sed` 不是专门用于去重的工具,但可以通过一些技巧实现简单的去重功能。 ```bash sed '$!N; /^\(.*\)\n\1$/!P; D' filename.txt ``` 这个命令通过将当前行与下一行比较来删除相邻的重复行。 ### 使用 `sort` 和 `awk` 结合 有时结合多个命令可以更灵活地处理数据。 ```bash sort filename.txt | awk '!seen[$0]++' ``` 这会先对文件内容进行排序,然后使用 `awk` 删除重复行。 ### 使用 `sort` 和 `uniq` 的组合 如果你需要统计每行出现的次数,可以使用 `uniq -c`。 ```bash sort filename.txt | uniq -c ``` 这会给出每行出现的次数,方便进一步分析。 以上方法可以根据具体需求选择使用,以达到删除文件中重复内容的目的。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

永远不要矫情

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值