Pokud jste někdy hráli hru karet, pravděpodobně byste znali pojem míchání. Trochu těžko představitelné, existuje linuxový nástroj příkazového řádku, který přesně to dělá s řádky v souborech. V tomto tutoriálu probereme základy příkazu 'shuf' pomocí několika snadno srozumitelných příkladů.
Ale než to uděláme, stojí za zmínku, že všechny příklady zde byly testovány na počítači Ubuntu 18.04 LTS.
Příkaz linux shuf
Příkaz shuf v Linuxu umožňuje generovat náhodné permutace. Následuje jeho syntaxe:
shuf [OPTION]... [FILE]
A zde je návod, jak to vysvětluje manuálová stránka nástroje:
Write a random permutation of the input lines to standard output.
Následuje několik příkladů ve stylu otázek a odpovědí, které by vám měly poskytnout lepší představu o tom, jak příkaz shuf funguje.
O1. Jak používat příkaz shuf?
Základní použití je velmi jednoduché. Stačí zadat název souboru jako vstup. Zde je příklad:
shuf test.txt
Nyní soubor test.txt obsahuje následující řádky:
1
2
3
4
5
6
7
8
9
Ale výše uvedený příkaz shuf vytvořil následující výstup:
3
4
6
5
1
8
2
7
9
Takže můžete vidět, že se řádky zamíchaly.
Q2. Jak omezit počet řádků na výstupu?
Pokud chcete omezit počet řádků ve výstupu shuf, použijte volbu -n příkazového řádku, která vyžaduje, abyste předali číslo, které představuje maximální počet řádků, které chcete na výstupu.
Například:
shuf -n 3 test.txt
Výše uvedený příkaz vytvořil následující výstup:
6
4
9
Q3. Jak povolit opakování řádků ve výstupu?
Předpokládejme, že vstupní soubor obsahuje 9 řádků, ale chcete, aby shuf produkoval více řádků než na výstupu (pomocí volby -n diskutované výše). To lze provést pomocí volby -r.
-r, --repeat
output lines can be repeated
Pokud tedy chcete, aby shuf vytvořil na výstupu 25 řádků, spusťte následující příkaz:
shuf -r -n 25 test.txt
Zde je výstup tohoto příkazu:
6
8
4
5
9
3
3
1
2
5
7
5
9
5
8
5
2
8
8
7
4
4
8
5
3
4. Jak zajistit, aby shuf považoval vstupní argumenty za řádky?
K tomu použijte volbu -e příkazového řádku. Zde je příklad:
shuf -e 1 2 3 4 5 6 7 8 9
Zde je výstup vytvořený tímto příkazem:
9
1
7
8
6
2
3
5
4
Závěr
Souhlasím, shuf není druh nástroje, který byste potřebovali každý den, ale není na škodu se o tomto nástroji dozvědět, zvláště když jeho křivka učení není tak strmá. Jakmile dokončíte procvičování toho, co jsme zde probrali, přejděte na manuálovou stránku nástroje, kde se o něm dozvíte více.