linux uniq按照一列去重,Linux uniq去重方法

本文介绍了如何使用Linux命令uniq处理日志文件中的重复行。uniq命令默认去除连续重复行,结合参数如'-c'显示计数,'-d'显示所有重复行,'-D'显示所有重复行,'-u'显示唯一行。在实际操作中,通常需要先用'sort'命令对文件排序以实现全局去重。文章通过实例展示了这些参数的使用方法,并演示了统计重复行数量的方法。
摘要由CSDN通过智能技术生成

在查看日志中我们会有很多重复的行,为了方便分析需要去重后进行统计或者查看分析,这个时候就需要使用去重,这里说一下去重使用的命令uniq。

uniq的参数:

-c, --count 在每行前加上表示相应行目出现次数的前缀编号

-d, --repeated 只输出重复的行

-D, --all-repeated[=delimit-method 显示所有重复的行

delimit-method={none(default),prepend,separate}

以空行为界限

-f, --skip-fields=N 比较时跳过前N 列

-i, --ignore-case 在比较的时候不区分大小写

-s, --skip-chars=N 比较时跳过前N 个字符

-u, --unique 只显示唯一的行

-z, --zero-terminated 使用'\0'作为行结束符,而不是新换行

-w, --check-chars=N 对每行第N 个字符以后的内容不作对照

--help 显示此帮助信息并退出

--version 显示版本信息并退出

我们创建一个有重复行的文件,然后针对文件进行去重处理

[root@localhost wulaoer]# cat wulaoer.txt

2 python3 800 Jan

6 DevOps 300 May

1 Linux 1200 Mar

5 redis 100 Sept

5 redis 100 Sept

4 golong 800 Oct

6 DevOps 300 May

6 DevOps 300 May

3 Ruby 200 Dec

5 redis 100 Sept

4 golong 800 Oct

5 redis 100 Sept

3 Ruby 200 Dec

uniq默认是删除连续的重复行,而不是删除整个文件中有重复的行,这两个概念不一样要分清

[root@localhost wulaoer]# uniq wulaoer.txt

2 python3 800 Jan

6 DevOps 300 May

1 Linux 1200 Mar

5 redis 100 Sept

4 golong 800 Oct

6 DevOps 300 May

3 Ruby 200 Dec

5 redis 100 Sept

4 golong 800 Oct

5 redis 100 Sept

3 Ruby 200 Dec

参数'-c'是查找连续出现的行的数量不是找整个文件出现重数

[root@localhost wulaoer]# uniq -c wulaoer.txt

1 2 python3 800 Jan

1 6 DevOps 300 May

1 1 Linux 1200 Mar

2 5 redis 100 Sept

1 4 golong 800 Oct

2 6 DevOps 300 May

1 3 Ruby 200 Dec

1 5 redis 100 Sept

1 4 golong 800 Oct

1 5 redis 100 Sept

1 3 Ruby 200 Dec

如果想找文件中所有重复行需要先对文件进行一下排序,排序后的字符串是连续的,就可以进行去重了,下面使用‘-d’参数查看重复的行。

[root@localhost wulaoer]# sort wulaoer.txt | uniq -d

3 Ruby 200 Dec

4 golong 800 Oct

5 redis 100 Sept

6 DevOps 300 May

使用'-D'参数显示所有重复的行。

[root@localhost wulaoer]# sort wulaoer.txt | uniq -D

3 Ruby 200 Dec

3 Ruby 200 Dec

4 golong 800 Oct

4 golong 800 Oct

5 redis 100 Sept

5 redis 100 Sept

5 redis 100 Sept

5 redis 100 Sept

6 DevOps 300 May

6 DevOps 300 May

6 DevOps 300 May

使用'-u'显示只出现一次的行

[root@localhost wulaoer]# sort wulaoer.txt | uniq -u

1 Linux 1200 Mar

2 python3 800 Jan

统计出现重复行的行数

[root@localhost wulaoer]# sort wulaoer.txt | uniq -c | sort -rn

4 5 redis 100 Sept

3 6 DevOps 300 May

2 4 golong 800 Oct

2 3 Ruby 200 Dec

1 2 python3 800 Jan

1 1 Linux 1200 Mar

以上是比较常用的参数,其他参数不太常用,而且在以后的工作中不太建议使用uniq,因为uniq使用必须依靠sort排序才方便去重。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Linux中以列去重,可以使用awk命令结合sort和uniq命令。首先,使用awk命令提取需要去重的列,然后使用sort命令对该列进行排序,最后使用uniq命令进行去重。 例如,如果我们有一个文件file.txt,包含两列name和age,我们想要以name列进行去重,可以使用以下命令: awk -F, '{print $1}' file.txt | sort | uniq 其中,-F,表示以逗号作为列分隔符,'{print $1}'表示打印第一列name。然后,使用sort命令对该列进行排序,再使用uniq命令进行去重。这样就可以实现以列去重的目的。 请注意,如果需要基于其他列进行去重,只需将'{print $1}'中的$1替换为相应的列号即可。 #### 引用[.reference_title] - *1* *3* [【linuxlinux去重方法](https://blog.csdn.net/LySunflower/article/details/127985765)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Linux文本使用uniq去重](https://blog.csdn.net/fushan2012/article/details/130010487)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值