Příkaz Uniq je užitečný k odstranění nebo detekci duplicitních položek v souboru. Tento tutoriál vysvětluje několik nejčastěji používaných možností příkazového řádku uniq, které by vám mohly pomoci.
Následující testovací soubor je v některých příkladech použit k pochopení toho, jak příkaz uniq funguje.
$ cat test aa aa bb bb bb xx
1. Základní použití
Syntaxe:
$ uniq [-options]
Například, když je příkaz uniq spuštěn bez jakékoli možnosti, odstraní duplicitní řádky a zobrazí jedinečné řádky, jak je uvedeno níže.
$ uniq test aa bb xx
2. Spočítat počet výskytů pomocí volby -c
Tato možnost je počítat výskyt řádků v souboru.
$ uniq -c test 2 aa 3 bb 1 xx
3. Tisknout pouze duplicitní řádky pomocí volby -d
Tato možnost je tisknout pouze duplicitní opakované řádky v souboru. Jak vidíte níže, nezobrazilo se tím řádek „xx“, protože v testovacím souboru není duplicitní.
$ uniq -d test aa bb
Výše uvedený příklad zobrazil všechny duplicitní řádky, ale pouze jednou. Ale tato volba -D vytiskne všechny duplicitní řádky v souboru. Například řádek „aa“ byl v testovacím souboru dvakrát, takže následující příkaz uniq zobrazil řádek „aa“ v tomto výstupu dvakrát.
$ uniq -D test aa aa bb bb bb
4. Tisknout pouze jedinečné řádky pomocí volby -u
Tato možnost je tisknout pouze jedinečné řádky v souboru.
$ uniq -u test xx
Pokud chcete odstranit duplicitní řádky ze souboru pomocí určitého vzoru, můžete použít příkaz sed delete.
5. Omezte srovnání na ‚N‘ znaků pomocí volby -w
Tato možnost omezuje srovnání pouze na první zadané „N“ znaky. Pro tento příklad použijte následující vstupní soubor test2.
$ cat test2 hi Linux hi LinuxU hi LinuxUnix hi Unix
Následující příkaz uniq používající volbu „w“ porovná prvních 8 znaků řádků v souboru a poté pomocí možnosti „c“ vytiskne počet výskytů řádků souboru.
$ uniq -c -w 8 testNew 3 hi Linux 1 hi Unix
Následující příkaz uniq používající volbu „w“ porovná prvních 8 znaků řádků v souboru a poté pomocí možnosti „D“ vytiskne všechny duplicitní řádky souboru.
$ uniq -D -w 8 testNew hi Linux hi LinuxU hi LinuxUnix
6. Vyhněte se porovnávání prvních ‚N‘ znaků pomocí volby -s
Tato možnost přeskočí porovnání prvních zadaných znaků ‚N‘. Pro tento příklad použijte následující vstupní soubor test3.
$ cat test3 aabb xxbb bbc bbd
Následující příkaz uniq používající volbu ‚s‘ přeskočí porovnání prvních 2 znaků řádků v souboru a poté pomocí možnosti ‚D‘ vytiskne všechny duplicitní řádky souboru.
Zde by počáteční 2 znaky, tj. „aa“ na 1. řádku a „“xx“ na 2. řádku, nebyly porovnány a další 2 znaky „bb“ v obou řádcích jsou stejné, takže by se zobrazily jako duplicitní řádky.
$ uniq -D -s 2 test3 aabb xxbb
7. Vyhněte se porovnávání prvních „N“ polí pomocí volby -f
Tato možnost přeskočí porovnání prvních zadaných „N“ polí řádků v souboru.
$ cat test2 hi hello Linux hi friend Linux hi hello LinuxUnix
Následující příkaz uniq používající volbu ‚f‘ přeskočí porovnání prvních 2 polí řádků v souboru a poté pomocí možnosti ‚D‘ vytiskne všechny duplicitní řádky souboru.
Zde by se počáteční 2 pole, tj. „ahoj ahoj“ v 1. řádku a „ahoj příteli“ na 2. řádku, neporovnávala a pak by další pole „Linux“ v obou řádcích bylo stejné, takže by se zobrazilo jako duplicitní řádky.
$ uniq -D -f 2 test2 hi hello Linux hi friend Linux