在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
输出重复行所在的文件名。