0034. shell命令--uniq

目录

34. shell命令--uniq

功能说明

语法格式

选项说明

实践操作

注意事项


34. shell命令--uniq

功能说明

        uniq 是 Linux 和 Unix 系统上的一个常用命令,用于从排序过的文本中删除重复的行。这意味着在使用 uniq 之前,你通常需要对输入文本进行排序(通常使用 sort 命令)。

        uniq 命令来自英文单词 unique 的缩写,中文译为“独特的、唯一的”,其功能是去除文件中的重复内容行。uniq 命令能够去除掉文件中相邻的重复内容行,如果两端相同内容,但中间夹杂了其他文本行,则需要先使用 sort 命令进行排序后再去重,这样保留下来的内容就都是唯一的了。

语法格式

SYNOPSIS
       uniq [OPTION]... [INPUT [OUTPUT]]

选项说明

-c, --count                在每行开头增加重复次数。
-d, --repeated             所有邻近的重复行只被打印一次。
-D                         所有邻近的重复行将全部打印。
--all-repeated[=METHOD]    类似于 -D,但允许每组之间以空行分割。METHOD取值范围{none(默认),prepend,separate}。
-f, --skip-fields=N        跳过对前N个列的比较。
--group[=METHOD]           显示所有行,允许每组之间以空行分割。METHOD取值范围:{separate(默认),prepend,append,both}。
-i, --ignore-case          忽略大小写的差异。
-s, --skip-chars=N         跳过对前N个字符的比较。
-u, --unique               只打印非邻近的重复行。
-z, --zero-terminated      设置行终止符为NUL(空),而不是换行符。
-w, --check-chars=N        只对每行前N个字符进行比较。
--help                     显示帮助信息并退出。
--version                  显示版本信息并退出。

实践操作

0. 环境准备
mkdir -p /test/uniq
cd /test/uniq
echo {a..d} {1..3} {b..g} {1..3} {c..k}
echo {a..d} {1..3} {b..g} {1..3} {c..k} |tr " " "\n" >file1.txt
cat file1.txt
echo -e "test 3\ntest 3\ntest 3\nlinux 2\nlinux 2" >file2.txt
cat file2.txt

1. 对指定的文件进行去重操作
uniq file1.txt    #无法直接去重
uniq file2.txt    #可以直接去重
sort file1.txt |uniq    #先排序,后去重
sort -u file1.txt
sort file1.txt |uniq |wc -l

uniq file1.txt |wc -l

2. 统计相同内容行在文件中重复出现的次数
sort file1.txt |uniq -c
uniq -c file2.txt
cat /etc/passwd
cat /etc/passwd |tr ':' '\n' 
cat /etc/passwd |tr ':' '\n' |sort
cat /etc/passwd |tr ':' '\n' |sort |uniq -c
cat /etc/passwd |tr ':' '\n' |sort |uniq -c |sort -rn
cat /etc/passwd |tr ':' '\n' |sort |uniq -c |sort -rn |wc -l
cat /etc/passwd |tr ':' '\n' |wc -l
#这里,tr ':' '\n' 将文件中的所有空格替换为换行符,从而将每个单词转换为其自己的行。
#然后,我们使用 sort、uniq 和 sort -nr 来计算并显示每个单词的出现次数(按降序排列)。

3. 仅显示指定文件中没有存在完全相同内容行的信息(只显示单一行,区别在于是否执行排序)
sort file1.txt |uniq -u
uniq -u file2.txt

4. 仅显示指定文件中存在完全相同内容行的信息
sort file1.txt |uniq -d
uniq -d file2.txt

注意事项

  • uniq 命令仅对连续重复的行有效。这就是为什么在使用它之前通常需要先进行排序。
  • 如果你不指定输出文件,则默认输出到标准输出(通常是终端或另一个命令的输入)。
  • 你可以将多个选项组合在一起使用,例如 uniq -cd file.txt。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

MineGi

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

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

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

打赏作者

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

抵扣说明:

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

余额充值