GNU/Linux >> Znalost Linux >  >> Linux

Jak zamíchat řádky v souboru v Linuxu

Vzhledem k tomu, že již bylo zjištěno, že operační systém Linux je špičkou ve všech činnostech s počítačem, prostřednictvím četných tipů a článků pro příkazový řádek Linuxu, na které jste na této stránce narazili.

Je čas dále zvýšit reputaci tohoto operačního systému. V rámci správy souborů Linuxu se podíváme na způsoby, jak zamíchat řádky v souboru umístěném v prostředí operačního systému Linux.

Promíchání řádků v souboru v prostředí operačního systému Linux může mít dva přístupy. V rámci prvního přístupu můžete chtít zamíchat/přeuspořádat řádky v cílovém souboru, aby se zobrazily v určitém požadovaném pořadí. V takovém případě je vyvolán příkaz řazení.

V rámci přístupu 2 si neuvědomujete pořadí, ve kterém by se měly objevit poslední řádky v cílovém souboru. V takových případech příkaz shuf je vyzván.

Tento článek nás provede různými linuxovými technikami náhodného míchání řádků v souboru v Linuxu.

Prohlášení o problému

Budeme muset vytvořit ukázkový textový soubor s několika řádky, na který budeme odkazovat při implementaci a spouštění různých příkazů pro míchání v Linuxu, o kterých se bude diskutovat.

$ sudo nano sample_file.txt

Pro očíslované zobrazení celého tohoto souboru můžeme použít příkaz cat:

$ cat -n sample_file.txt

příkaz cat výstup nám říká, že máme co do činění s textovým souborem s celkem 15 linky. Také, jak jste si možná všimli, řádky 12 do 14 se opakují. Výskyt těchto tří řádků nám pomůže pochopit, jak fungují různé příkazy pro míchání.

Přehazování řádků pomocí příkazu Shuf v Linuxu

Od GNU Coreutils hostitelé balíčku shuf příkaz, měl by být standardně nainstalován ve vaší distribuci operačního systému Linux. Hlavní funkce shuf příkaz je generovat náhodné permutace na základě vstupu, který je do něj přiváděn.

Pracovní mechanismus shuf příkaz je následující; nejprve načte vstupní data do paměti a před pokračováním v provádění odkazuje, zda je volná paměť větší než velikost vstupních dat/souboru.

Jeho syntaxe je následující:

$ shuf [TARGET_INPUT_FILE] 

V našem případě bude jeho implementace následující:

$ shuf sample_file.txt

Jak můžete vidět, podařilo se nám náhodně zamíchat řádky v našem ukázkovém textovém souboru. Pokud spustíte shuf příkaz, znovu a znovu, pokaždé dostanete jiný výsledek:

$ shuf random_file.txt 

Použijte příkaz Sort k promíchání řádků v Linuxu

Zatímco třídění příkaz se používá hlavně k přeskupení řádků souboru specifickým způsobem, můžeme tyto řádky souboru náhodně zkombinovat, pokud zkombinujeme třídění pomocí -R možnost.

$ sort -R sample_file.txt 

Spouštění příkazu znovu a znovu by mělo pokaždé přinést jiné výsledky.

Použijte příkaz Awk k promíchání řádků souborů v systému Linux

Podle jeho manuálové stránky pro Linux (man awk ), awk je dokonalý programovací jazyk pro skenování a zpracování textu. Abyste však porozuměli jeho použití při míchání řádků, budete se muset trochu seznámit s programovacími koncepty, jako jsou proměnné, smyčky (cykly while) a příkazy (příkaz if), jak je ukázáno níže:

awk 'BEGIN{srand() }
{ lines[++d]=$0 }
END{
    while (1){
    if (e==d) {break}
        RANDOM = int(1 + rand() * d)
        if ( RANDOM in lines  ){
            print lines[RANDOM]
            delete lines[RANDOM]
            ++e
        }
    }
}' sample_file.txt

Nyní nám vyhovuje míchání řádků v souboru v Linuxu.


Linux
  1. Jak uložit výstup příkazu do souboru v Linuxu

  2. Jak zobrazit konkrétní řádky souboru v příkazovém řádku Linuxu

  3. Příkaz wc pro Linux

  1. Linux File Command:Jak určit typ souboru v Linuxu

  2. Jak odstranit (smazat) soubor nebo adresář v Linuxu

  3. Jak počítat počet řádků v souboru v Linuxu (příklady wc a nl)

  1. Jak používat příkaz md5sum v Linuxu

  2. Jak používat dotykový příkaz v Linuxu

  3. Jak používat příkaz Linux head