温馨提示×

linux去重命令如何实现

小樊
81
2024-12-03 15:22:23
栏目: 智能运维

在Linux中,可以使用uniq命令来去除连续重复的行

  1. uniq:默认情况下,uniq命令会删除连续重复的行。例如:
$ cat input.txt
a
a
b
b
c
c
d

$ uniq input.txt
a
b
c
d
  1. uniq -c:使用-c选项,uniq会显示每行重复的次数。例如:
$ cat input.txt
a
a
b
b
c
c
d

$ uniq -c input.txt
1
1
1
1
  1. uniq -d:使用-d选项,uniq只会显示重复的行,而不显示它们出现的次数。例如:
$ cat input.txt
a
a
b
b
c
c
d

$ uniq -d input.txt
a
b
c
d
  1. uniq -f:使用-f选项,uniq会忽略每行开头的指定数量的字符。例如,如果我们要忽略前两个字符,可以这样使用:
$ cat input.txt
aa
aa
bb
bb
cc
cc
dd

$ uniq -f 2 input.txt
aa
bb
cc
dd
  1. uniq -w:使用-w选项,uniq会忽略每行开头的指定数量的字符。例如,如果我们要忽略前两个字符,可以这样使用:
$ cat input.txt
aa
aa
bb
bb
cc
cc
dd

$ uniq -w 2 input.txt
aa
bb
cc
dd
  1. 结合其他命令:uniq命令通常与其他命令一起使用,例如grepsed等,以实现更复杂的文本处理。例如,要找到包含重复行的文件,可以这样做:
$ grep -o '.+' input.txt | sort | uniq -c | sort -nr | awk '$1 > 1 {print $2}'

这个命令首先使用grep提取所有行,然后使用sort对行进行排序,接着使用uniq -c计算每行重复的次数,再使用sort -nr按重复次数降序排序,最后使用awk输出重复行所在的文件名。

0