Vyhledávání na webu

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