我的文件包含大量数据,其中一些是重复的。我想删除重复的行,如果他们互相追随。
例如,如果输入文件包含:
string1
string2
string2
string3
string1
string4
string4
string4
我希望输出文件读取:
string1
string2
string3
string1
string4
我对bash脚本相当新。我认为awk是要走的路,但我有点难过。任何帮助表示赞赏。
答案 0 :(得分:2)
命令uniq
正是这样做的。
它经常与sort
结合使用,因此副本将相邻。
答案 1 :(得分:1)
您可以使用awk
:
awk '$0==b{next}{b=$0;print}' a.txt
string1
string2
string3
string1
string4
我使用变量b
代表缓冲区。如果当前行已经在缓冲区中,则不会打印该行。否则它会将行放到缓冲区中打印出来。
答案 2 :(得分:1)
这个awk也应该有效:
awk '$1!=p{print} {p=$1}' file
string1
string2
string3
string1
string4
或者你可以进一步缩短它:
awk '$1!=p; {p=$1}' file