【linux】(3)uniq

发布于:2024-06-04 ⋅ 阅读:(92) ⋅ 点赞:(0)

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

网站公告

今日签到

点亮在社区的每一天
去签到