【linux】(3)uniq

uniq 用于报告或忽略重复的行。uniq 通常与 sort 命令一起使用,因为 uniq 只能识别相邻的重复行。

基本用法

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

常用选项

  1. -c:前置行数
uniq -c filename

例子:统计每行出现的次数。

  1. -d:只输出重复行
uniq -d filename

例子:只显示重复的行。

  1. -u:只输出不重复行
uniq -u filename

例子:只显示不重复的行。

  1. -i:忽略大小写
uniq -i filename

例子:忽略大小写进行比较。

  1. -f:忽略字段
   uniq -f N filename

例子:忽略前 N 个字段。

  1. -s:忽略字符
   uniq -s N filename

例子:忽略每行前 N 个字符。

  1. -w:比较前 N 个字符
   uniq -w N filename

例子:只比较每行前 N 个字符。

  1. --help:显示帮助信息
   uniq --help

例子:显示所有选项的详细说明。

示例文件

假设有一个文件 example.txt,内容如下:

apple
banana
apple
orange
banana
grape

统计行数

前置每行出现的次数:

uniq -c example.txt

输出:

      1 apple
      1 banana
      1 apple
      1 orange
      1 banana
      1 grape

只输出重复行

只显示重复的行:

uniq -d example.txt

由于 uniq 只能识别相邻的重复行,输出为空。

如果对文件进行排序后再使用 uniq

sort example.txt | uniq -d

输出:

apple
banana

只输出不重复行

只显示不重复的行:

uniq -u example.txt

由于 uniq 只能识别相邻的重复行,输出为原文件内容。

如果对文件进行排序后再使用 uniq

sort example.txt | uniq -u

输出:

grape
orange

忽略大小写

忽略大小写进行比较:

uniq -i example.txt

输出和原文件相同,因为没有相邻的重复行。

如果对文件进行排序后再使用 uniq

sort -f example.txt | uniq -i

输出:

apple
banana
grape
orange

忽略字段

假设有一个文件 fields.txt,内容如下:

1 apple
2 banana
3 apple
4 orange
5 banana
6 grape

忽略前一个字段:

uniq -f 1 fields.txt

输出:

1 apple
2 banana
3 apple
4 orange
5 banana
6 grape

如果对文件进行排序后再使用 uniq

sort -k2 fields.txt | uniq -f 1

输出:

1 apple
2 banana
6 grape
4 orange

忽略字符

假设有一个文件 chars.txt,内容如下:

aaapple
aabanana
bbapple
bbbanana
ccgrape

忽略前两个字符:

uniq -s 2 chars.txt

输出:

aaapple
aabanana
bbapple
bbbanana
ccgrape

如果对文件进行排序后再使用 uniq

sort chars.txt | uniq -s 2

输出:

aaapple
aabanana
ccgrape

比较前 N 个字符

只比较每行前 N 个字符:

uniq -w 5 chars.txt

输出:

aaapple
bbapple
ccgrape

排序并使用 uniq

通常情况下,uniqsort 结合使用,以确保相同的行是相邻的。例如:

sort filename | uniq

处理输出

可以将 uniq 的输出重定向到新文件:

sort example.txt | uniq > unique_example.txt
  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

游码客

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

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

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

打赏作者

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

抵扣说明:

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

余额充值