Zábava v linuxovém terminálu – hrajte si s počtem slov a znaků
Příkazový řádek Linuxu má kolem sebe spoustu zábavy a mnoho únavných úkolů lze provést velmi snadno, ale dokonale. Hraní se slovy a znaky, jejich frekvence v textovém souboru atd. je to, co uvidíme v tomto článku.
Jediný příkaz, který nás napadá, pro ladění příkazového řádku Linuxu pro manipulaci se slovy a znaky z textového souboru je příkaz wc.
Příkaz „wc“, který znamená počet slov, dokáže vytisknout počty nových řádků, slov a bajtů z textového souboru.
Abychom mohli pracovat s malými skripty pro analýzu textového souboru, musíme mít textový soubor. Pro zachování jednotnosti vytváříme textový soubor s výstupem příkazu man, jak je popsáno níže.
man man > man.txt
Výše uvedený příkaz vytvoří textový soubor ‚man.txt‘ s obsahem ‚manuálové stránky‘ pro příkaz ‚man‘.
Chceme zkontrolovat nejběžnější slova ve výše vytvořeném „textovém souboru“ spuštěním níže uvedeného skriptu.
cat man.txt | tr ' ' '2' | tr '[:upper:]' '[:lower:]' | tr -d '[:punct:]' | grep -v '[^a-z]' | sort | uniq -c | sort -rn | head
Ukázkový výstup
7557
262 the
163 to
112 is
112 a
78 of
78 manual
76 and
64 if
63 be
Výše uvedený jednořádkový jednoduchý skript ukazuje deset nejčastěji se vyskytujících slov a jejich četnost výskytu v textovém souboru.
Co takhle rozdělit slovo na jednotlivá pomocí následujícího příkazu.
echo 'tecmint team' | fold -w1
Ukázkový výstup
t
e
c
m
i
n
t
t
e
a
m
Poznámka: Zde je „-w1“ pro šířku.
Nyní rozebereme každé jednotlivé slovo v textovém souboru, seřadíme výsledek a získáme požadovaný výstup s frekvencí deseti nejčastějších znaků.
fold -w1 < man.txt | sort | uniq -c | sort -rn | head
Ukázkový výstup
8579
2413 e
1987 a
1875 t
1644 i
1553 n
1522 o
1514 s
1224 r
1021 l
Co takhle získat nejčastější znaky v textovém souboru s velkými a malými písmeny odlišně spolu s jejich četností výskytu.
fold -w1 < man.txt | sort | tr '[:lower:]' '[:upper:]' | uniq -c | sort -rn | head -20
Ukázkový výstup
11636
2504 E
2079 A
2005 T
1729 I
1645 N
1632 S
1580 o
1269 R
1055 L
836 H
791 P
766 D
753 C
725 M
690 U
605 F
504 G
352 Y
344 .
Zkontrolujte výše uvedený výstup, kde je zahrnuto interpunkční znaménko. Umožňuje odstranit interpunkci pomocí příkazu „tr“. Tady jsme:
fold -w1 < man.txt | tr '[:lower:]' '[:upper:]' | sort | tr -d '[:punct:]' | uniq -c | sort -rn | head -20
Ukázkový výstup
11636
2504 E
2079 A
2005 T
1729 I
1645 N
1632 S
1580 O
1550
1269 R
1055 L
836 H
791 P
766 D
753 C
725 M
690 U
605 F
504 G
352 Y
Nyní mám tři textové soubory, spusťte výše uvedený skript, abyste viděli výstup.
cat *.txt | fold -w1 | tr '[:lower:]' '[:upper:]' | sort | tr -d '[:punct:]' | uniq -c | sort -rn | head -8
Ukázkový výstup
11636
2504 E
2079 A
2005 T
1729 I
1645 N
1632 S
1580 O
Dále budeme generovat ta občasná písmena, která mají alespoň deset písmen. Zde je jednoduchý skript.
cat man.txt | tr '' '2' | tr '[:upper:]' '[:lower:]' | tr -d '[:punct:]' | tr -d '[0-9]' | sort | uniq -c | sort -n | grep -E '..................' | head
Ukázkový výstup
1 ──────────────────────────────────────────
1 a all
1 abc any or all arguments within are optional
1 able see setlocale for precise details
1 ab options delimited by cannot be used together
1 achieved by using the less environment variable
1 a child process returned a nonzero exit status
1 act as if this option was supplied using the name as a filename
1 activate local mode format and display local manual files
1 acute accent
Poznámka: Čím dál více teček ve výše uvedeném skriptu, dokud nebudou vygenerovány všechny výsledky. Můžeme použít .{10} k získání deseti shodných znaků.
Tyto jednoduché skripty nám také umožňují poznat nejčastěji se vyskytující slova a znaky v angličtině.
To je prozatím vše. Budu tu znovu s dalším zajímavým a netradičním tématem, které stojí za to znát a které si vy lidé rádi přečtete. Nezapomeňte nám poskytnout svou cennou zpětnou vazbu v sekci komentářů níže.
Přečtěte si také: 20 zábavných příkazů Linuxu