Linux命令-数据重复-uniq命令

在日常工作中,我们常常会遇到需要处理大量数据的情况。而对于这些数据中的重复内容,我们又该如何快速去除呢?这时候,Linux系统下的uniq命令就可以派上用场了。本文将详细介绍Linux uniq命令的使用方法及其各种参数。


一、基础用法

首先来看一下uniq命令最基本的用法。假设我们有一个文件file.txt,内容如下:

apple

banana

orange

apple

pear

如果我们想要去除其中的重复行,只需在终端输入以下命令: 

uniq file.txt

此时终端会输出:

apple 
banana
orange 
apple 
pear

可以发现,输出结果只保留了原文件中不重复的行(仅会对相邻行进行去重)。


二、-c参数

如果我们想知道每个不同行出现的次数,可以使用-c参数。例如:

uniq -c file.txt

此时终端会输出: 

2 apple
1 banana
1 orange 
1 apple 
1 pear

可以看到,输出结果中每一行前面都有一个数字,表示该行在原文件中出现的次数。

三、-d参数

如果我们只想保留重复出现的行(即去除不重复的行),可以使用-d参数。例如:

uniq -d file.txt

此时终端会输出:

apple

可以看到,输出结果只保留了原文件中重复的行,其他行都被去除了。

四、-u参数

反之,如果我们只想保留不重复的行(即去除重复出现的行),可以使用-u参数。例如:

先进行排序

sort file.txt | uniq -u

此时终端会输出: 

banana
orange 
pear

可以看到,输出结果只保留了原文件中不重复的行,其他行都被去除了。

五、-s参数

类似于-f参数,-s参数可以忽略文件中前几个字符进行去重操作。例如,假设我们有一个文件file3.txt,内容如下: 

apple,red,round,delicious 
banana,yellow,elongated,tasty 
orange,orange,round,sour 
apple,green,round,sour 
pear,brown,pear-shaped,sweet

如果我们只想根据第六个字符(即第一个逗号后面的字符)进行去重操作,可以使用以下命令:

uniq -s 5 file3.txt 

此时终端会输出:

apple,red,round,delicious
banana,yellow,elongated,tasty
orange,orange,round,sour
pear,brown,pear-shaped,sweet

可以看到,输出结果中第六个字符相同的行已经被去除了。

七、-i参数

有时候qq linux,文件中的内容可能会包含大小写不同的重复行。如果我们希望忽略大小写进行去重操作,可以使用-i参数。例如,假设我们有一个文件file4.txt,linux web服务器,内容如下:

Apple 
Banana 
orange 
apple 
Pear 

如果我们希望忽略大小写进行去重操作linux uniq命令,可以使用以下命令:

uniq -i file4.txt

此时终端会输出: 

Apple 
Banana 
orange 
Pear

可以看到,输出结果中大小写不同但内容相同的行已经被去除了。

八、-w参数

与-f和-s参数类似,-w参数可以指定需要比较的字符数。例如,假设我们有一个文件file5.txt,内容如下:

apples are delicious. 
bananas are tasty. 
oranges are sour. 
pears are sweet.

如果我们只想根据每行前5个字符进行去重操作,可以使用以下命令:

uniq -w 5 file5.txt

此时终端会输出:

apples are delicious. 
bananas are tasty. 
oranges are sour. 
pears are sweet.

可以看到,输出结果中每行前5个字符相同的行已经被去除了。

九、-z参数

有时候,文件中的内容可能会包含空格或其他特殊字符。如果我们希望在比较时以NULL字符作为分隔符,可以使用-z参数。例如linux uniq命令,假设我们有一个文件file6.txt,内容如下:

apple 
banana 
orange 
apple 
pear

如果我们希望以NULL字符作为分隔符进行去重操作,可以使用以下命令:

uniq -z file6.txt

此时终端会输出: 

apple 
banana 
orange 
pear

可以看到,输出结果中两个空行之间的重复行已经被去除了。
 



 

  • 20
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值