在Linux中,可以使用uniq
命令来去除连续重复的行
uniq
:默认情况下,uniq
命令会删除连续重复的行。例如:$ cat input.txt
a
a
b
b
c
c
d
$ uniq input.txt
a
b
c
d
uniq -c
:使用-c
选项,uniq
会显示每行重复的次数。例如:$ cat input.txt
a
a
b
b
c
c
d
$ uniq -c input.txt
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
uniq -f
:使用-f
选项,uniq
会忽略每行开头的指定数量的字符。例如,如果我们要忽略前两个字符,可以这样使用:$ cat input.txt
aa
aa
bb
bb
cc
cc
dd
$ uniq -f 2 input.txt
aa
bb
cc
dd
uniq -w
:使用-w
选项,uniq
会忽略每行开头的指定数量的字符。例如,如果我们要忽略前两个字符,可以这样使用:$ cat input.txt
aa
aa
bb
bb
cc
cc
dd
$ uniq -w 2 input.txt
aa
bb
cc
dd
uniq
命令通常与其他命令一起使用,例如grep
、sed
等,以实现更复杂的文本处理。例如,要找到包含重复行的文件,可以这样做:$ grep -o '.+' input.txt | sort | uniq -c | sort -nr | awk '$1 > 1 {print $2}'
这个命令首先使用grep
提取所有行,然后使用sort
对行进行排序,接着使用uniq -c
计算每行重复的次数,再使用sort -nr
按重复次数降序排序,最后使用awk
输出重复行所在的文件名。