GNU/Linux >> Znalost Linux >  >> Linux

Odstranit přilehlé duplicitní řádky při zachování objednávky?

Mám soubor s jedním sloupcem s názvy, které se každý několikrát opakují. Chci zhustit každé opakování do jednoho a zároveň zachovat všechna ostatní opakování stejného jména, která nesousedí s jinými opakováními stejného jména.

Např. Chci otočit levou stranu na pravou:

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

Toto je to, co používám:perl -ne 'print if ++$k{$_}==1' file.txt > file2.txt
Tato metoda však zachovává pouze jednoho zástupce zleva (tj. Golb1 a Akna se neopakují).

Existuje způsob, jak zachovat jedinečné názvy pro každý blok a zároveň zachovat názvy, které se opakují ve více, nesousedících blocích?

Přijatá odpověď:

uniq udělá to za vás:

$ uniq inputfile
Golgb1
Akna
Spata20
Golgb1
Akna

Linux
  1. Jak najít a odstranit duplicitní fotografie v Linuxu

  2. Jak odstranit duplikáty v .bash_history, zachování pořádku?

  3. Jak odstranit Bom ze souboru UTF-8?

  1. Udržujeme vás ve smyčce – příklady opakování pro, Zatímco, dokud

  2. 7 Příklady příkazů Linux Uniq k odstranění duplicitních řádků ze souboru

  3. Jak odstranit řádky, které se objevují v souboru B, z jiného souboru A?

  1. Jak použít sed k odstranění posledních n řádků souboru

  2. Efektivně odstraňte poslední dva řádky extrémně velkého textového souboru

  3. Jaké je výchozí pořadí řazení Linuxu?