それぞれが何回も繰り返される名前が1列のファイルがあります。同じ名前の他の繰り返しに隣接していない同じ名前の他の繰り返しを維持しながら、各繰り返しを1つに圧縮したい。
例えば、私は左側を右側に向けたいです:
Golgb1 Golgb1
Golgb1 Akna
Golgb1 Spata20
Golgb1 Golgb1
Golgb1 Akna
Akna
Akna
Akna
Spata20
Spata20
Spata20
Golgb1
Golgb1
Golgb1
Akna
Akna
Akna
これは私が使用してきたものです。perl -ne 'print if ++$k{$_}==1' file.txt > file2.txt
ただし、この方法では左から1つの代表のみが保持されます(つまり、Golb1とAknaは繰り返されません)。
複数の隣接しないブロックで繰り返される名前を維持しながら、各ブロックの一意の名前を維持する方法はありますか?