Příkaz wc (počet slov) je jedním ze základních nástrojů GNU, který vypadá jednoduše, ale ve skutečnosti je to docela užitečný příkaz. Jak je patrné z názvu, počítá počet řádků, slov, znaků, bajtů a dokonce i délku nejdelšího řádku v souboru a vytiskne je na standardní výstup. Tento počet můžete potřebovat z několika důvodů. Pomocí počtu znaků můžete například omezit počet znaků, které lze vložit do příspěvku. Podobně můžete spočítat počet uživatelů ve vašem systému, počet balíčků nainstalovaných ve vašem systému atd.
V tomto článku vysvětlíme, jak používat příkaz wc v Linuxu spolu s jeho možnostmi příkazového řádku a několika příklady.
Provedli jsme příkazy na systému Ubuntu 20.04 Focal Fossa. Víceméně stejné příkazy lze implementovat i na jiné distribuce Linuxu. Spustili jsme příkazy ve výchozí aplikaci Terminal, ke které lze přistupovat pomocí klávesové zkratky Ctrl+Alt+T.
Syntaxe
Zde je základní syntaxe příkazu wc:
wc [OPTION]... [FILE]...
Pokud chcete použít více možností, můžete je přidat bez mezery. Zatímco u více souborů byste je měli oddělit jednou mezerou.
Základní použití příkazu wc
Když je příkaz wc použit bez jakýchkoli voleb příkazového řádku, vrací počet řádků, slov a bajtů v souborech. Chcete-li použít příkaz wc, jednoduše zadejte wc následovaný názvem souboru, jehož počet chcete zjistit.
$ wc testfile.txt

Vysvětlení výstupu:
Příkaz wc vytiskne výsledky počtu pro zadaný soubor ve čtyřech sloupcích. První sloupec ukazuje počet řádků v souboru, druhý sloupec ukazuje počet slov, třetí sloupec ukazuje počet bajtů a čtvrtý sloupec ukazuje název souboru.
Poznámka:wc vytiskne pouze počet nových řádků, nikoli skutečné řádky v určeném souboru.
Ve výše uvedeném výstupu příkazu je 12 počet řádků, 21 je počet slov a 116 je počet bajtů v „testfile.txt“.
Pokud nechcete ve výsledku tisknout název souboru, použijte $ wc < testfile.txt
Počítání z více souborů
Pomocí příkazu wc můžete zadat více souborů pro počet. Příkaz wc vrátí počet pro každý soubor spolu s celkovým počtem na konci, což je součet počtu pro každý soubor.

Možnosti
Příkaz wc má některé možnosti příkazového řádku. Pojďme se podívat na tyto možnosti a jejich funkce:
Spočítejte počet řádků
Použití příkazu wc s -l nebo –linky můžete vytisknout pouze počet řádků v souboru. Například následující příkaz vytiskne pouze počet řádků v „testfile.txt“:
$ wc -l testfile.txt
V následujícím výstupu je 12 počet řádků v „testfile.txt“.

Spočítejte počet slov
Pokud potřebujete vytisknout pouze počet slov v souboru, použijte příkaz wc s -w nebo –slov volba. Například následující příkaz vypíše počet slov v „testfile.txt“:
$ wc -w testfile.txt
V následujícím výstupu je 21 počet slov v „testfile.txt“.

Spočítejte počet bajtů
Použití příkazu wc s -c nebo –bajtů možnost, můžete vytisknout počet bajtů v souboru. Následující příkaz vypíše počet bajtů v souboru „testfile.txt“:
$ wc -c testfile.txt
V následujícím výstupu je 116 počet bajtů v souboru „testfile.txt“.
Spočítejte počet znaků
Použití příkazu wc s -m nebo –znaky můžete vytisknout počet znaků v souboru. Například následující příkaz vytiskne pouze počet znaků v „testfile.txt“:
$ wc -m testfile.txt
V následujícím výstupu je 116 počet znaků v souboru testfile.txt.
Poznámka:Počet bajtů a počet znaků jsou stejné pro soubory ve formátu ASCII.
Vytisknout délku nejdelšího řádku
Pokud potřebujete vytisknout délku nejdelšího řádku v konkrétním souboru, můžete tak učinit pomocí příkazu wc s -L nebo –max-line-length volba. Například následující příkaz vytiskne délku nejdelšího řádku souboru „testfile.txt“:
$ wc -L testfile.txt
V následujícím výstupu je 20 délka nejdelšího řádku.
Zobrazit verzi
Chcete-li zobrazit verzi příkazu wc, použijte následující příkaz:
$ wc --version

Vytisknout počet řádků a bajtů
Můžete také kombinovat možnosti příkazového řádku. Chcete-li například vytisknout počet řádků a bajtů, zkombinujte volby -l a -c následovně:
$ wc -lc
Poznámka:Ať už spustíte -lc nebo -cl, výstup bude vždy ve stejném pořadí, tj. počet řádků, slov a bajtů.

Ve výše uvedeném výstupu je 29 počet řádků a 782 počet bajtů v souboru „sample.txt“.
Uložit počet do souboru
Chcete-li uložit výstup příkazu wc do souboru, použijte operátor> následovně:
$ wc sample.txt > file_count
Příklad použití příkazu Wc
Podívejme se na některé příklady příkazu wc propojením s jinými příkazy.
Počítání souborů v libovolném adresáři
Chcete-li spočítat počet souborů v libovolném adresáři, převeďte výstup příkazu find do wc. Chcete-li například zjistit počet souborů v adresáři ~/Downloads, příkaz by byl:
$ find ~/Downloads/ -type f | wc -l
Příkaz find vypíše seznam všech souborů v adresáři ~/Downloads vašeho systému, který je pak přesměrován do příkazu wc, aby se získal počet.

Spočítejte počet uživatelů
Příkaz wc lze také použít k počítání celkového počtu uživatelů v systému. Chcete-li spočítat počet uživatelů, použijte příkaz „getent passwd“ a jeho výstup převeďte do příkazu wc následovně:
$ getent passwd | wc –l
Příkaz ‚getent passwd‘ vypíše seznam všech uživatelů v systému, který je pak přesměrován do příkazu wc, aby získal počet.

Počet nainstalovaných balíčků
Pomocí příkazu wc můžete také spočítat počet nainstalovaných balíčků ve vašem systému. Chcete-li spočítat počet nainstalovaných balíčků, použijte následující příkaz:
$ apt list --installed | wc -l
Příkaz „apt list –installed“ vypíše seznam všech nainstalovaných balíčků v systému, který je poté přesměrován do příkazu wc, aby získal počet.

Spočítat počet konkrétních slov v souboru
Pomocí příkazu wc můžete spočítat počet konkrétních slov v souboru. Chcete-li například zjistit, kolikrát se slovo „science“ objevilo v souboru s názvem „sample.txt“, příkaz by byl:
$ grep -o ‘science’ sample.txt | wc -w
V tomto příkladu příkaz grep hledá výskyt slova „science“ v souboru sample.txt, který je pak přenesen do příkazu wc, aby získal počet.

Počítání počtu znaků na konkrétním řádku
Pomocí příkazu wc můžete také zjistit počet znaků v konkrétním řádku. Chcete-li například zjistit počet znaků v řádku 50 souboru s názvem „sample.txt“, příkaz bude:
$ head -50 sample.txt | tail -1 | wc -w
V tomto příkladu hlava příkaz vypíše prvních 50 řádků souboru sample.txt, který je poté přesměrován do příkazu tail. „ocas -1 ” poté odfiltruje poslední řádek (řádek č. 50) prvního výstupu, který získal z head příkaz. Výstup z ocasu příkaz je pak přesměrován do příkazu wc, aby získal počet znaků na řádku 50.

Použijte skript pro počítání
V následujícím příkladu vytvoříme skript, který bude počítat řádky, slova a bajty v souboru. Při spouštění skriptu předáme název souboru jako argument, abyste mohli spustit stejný skript pro jakýkoli ze svých souborů.
Vytvořte skript s následujícími řádky kódu:
#!/bin/bash echo "File to read:" read file echo "" echo "This file has the following number of:" echo -n "Lines: " wc -l < $file echo -n "Words: " wc -w < $file echo -n "Chars: " wc -c < $file

Nyní spusťte skript předáním názvu souboru jako argumentu.
$ <./script_name> <path/to/filename>
Chcete-li například získat počet řádků, slov a znaků pro soubor s názvem „sample.txt“, spusťte skript předáním sample.txt jako argument:
$ ./script2 sample.txt
Po spuštění skriptu obdržíte podobný výstup zobrazující počet slov pro váš soubor.

Pokud je soubor v jiném umístění, než je váš aktuální pracovní adresář, uveďte úplnou cestu:
$ ./script2 /etc/passwd

Takto můžete použít příkaz wc v Linuxu. V tomto článku jste se naučili základy příkazu wc spolu s jeho možnostmi příkazového řádku a několika praktickými příklady. Nyní můžete snadno spočítat počet řádků, slov, znaků a bajtů ve vašich souborech a ve výstupu z jiných příkazů.