GNU/Linux >> Belajar Linux >  >> Linux

Hapus Garis Duplikat yang Berdekatan Sambil Menjaga Pesanan?

Saya memiliki file dengan satu kolom dengan nama yang masing-masing berulang beberapa kali. Saya ingin memadatkan setiap pengulangan menjadi satu, sambil menjaga pengulangan lain dengan nama yang sama yang tidak berdekatan dengan pengulangan lain dengan nama yang sama.

Misalnya. Saya ingin mengubah sisi kiri ke sisi kanan:

Golgb1    Golgb1    
Golgb1    Akna
Golgb1    Spata20
Golgb1    Golgb1
Golgb1    Akna
Akna
Akna
Akna
Spata20
Spata20
Spata20
Golgb1
Golgb1
Golgb1
Akna
Akna
Akna

Inilah yang saya gunakan:perl -ne 'print if ++$k{$_}==1' file.txt > file2.txt
Namun, metode ini hanya membuat satu perwakilan dari kiri (yaitu Golb1 dan Akna tidak diulang).

Apakah ada cara untuk menyimpan nama unik untuk setiap blok, sambil mempertahankan nama yang berulang di beberapa blok yang tidak berdekatan?

Jawaban yang Diterima:

uniq akan melakukan ini untuk Anda:

$ uniq inputfile
Golgb1
Akna
Spata20
Golgb1
Akna

Linux
  1. Bagaimana Cara Menghapus Garis Duplikat Di Dalam File Teks?

  2. Bagaimana Cara Menghapus Duplikat Di .bash_history, Mempertahankan Pesanan?

  3. Hapus Bidang Duplikat Di Kolom yang Diberikan?

  1. Bagaimana Cara Menghapus Bom Dari File Utf-8?

  2. Hapus Baris Header Ekstra Dari File, Kecuali Baris Pertama?

  3. Diff Dimana Garis Hampir Sama Tapi Rusak?

  1. Hapus Baris Yang Mengandung String Tertentu Dan Baris Berikut?

  2. Menjaga Anda di Loop – Contoh Bash Untuk, Sementara, Sampai Loop

  3. perintah grpck – Hapus entri yang rusak atau duplikat di file /etc/group dan /etc/gshadow.