Szórakozás a Linux terminálban – Játssz a szavak és karakterek számával
A Linux parancssora nagyon szórakoztató, és sok fárasztó feladat nagyon egyszerűen, mégis tökéletesen elvégezhető. Ebben a cikkben a szavakkal és karakterekkel való játékot, azok gyakoriságát egy szöveges fájlban stb. fogjuk látni.
Az egyetlen parancs, ami eszünkbe jut, a wc parancs, amellyel a Linux parancssort módosítani lehet a szövegfájlból származó szavak és karakterek manipulálására.
A „wc” parancs, amely a szószámot jelöli, képes újsort, szót és bájtszámot nyomtatni egy szöveges fájlból.
Ahhoz, hogy a szöveges fájl elemzéséhez kis szkriptekkel dolgozhassunk, rendelkeznünk kell egy szövegfájllal. Az egységesség megőrzése érdekében létrehozunk egy szöveges fájlt a man parancs kimenetével, az alábbiak szerint.
man man > man.txt
A fenti parancs egy „man.txt” szövegfájlt hoz létre a „manuális oldal” tartalommal a „man” parancshoz.
Szeretnénk ellenőrizni a leggyakoribb szavakat a fent létrehozott „Szövegfájlban” az alábbi szkript futtatásával.
cat man.txt | tr ' ' '2' | tr '[:upper:]' '[:lower:]' | tr -d '[:punct:]' | grep -v '[^a-z]' | sort | uniq -c | sort -rn | head
Minta kimenet
7557
262 the
163 to
112 is
112 a
78 of
78 manual
76 and
64 if
63 be
A fenti egysoros egyszerű szkript megmutatja a tíz leggyakrabban előforduló szót és azok előfordulási gyakoriságát a szövegfájlban.
Mit szólnál, ha egy szót egyénre bontanál a következő paranccsal.
echo 'tecmint team' | fold -w1
Minta kimenet
t
e
c
m
i
n
t
t
e
a
m
Megjegyzés: Itt a „-w1” a szélességet jelenti.
Most minden egyes szót fel fogunk bontani egy szövegfájlban, rendezzük az eredményt, és megkapjuk a kívánt kimenetet a tíz leggyakoribb karakter gyakoriságával.
fold -w1 < man.txt | sort | uniq -c | sort -rn | head
Minta kimenet
8579
2413 e
1987 a
1875 t
1644 i
1553 n
1522 o
1514 s
1224 r
1021 l
Mit szólnál ahhoz, hogy a szövegfájlban a leggyakoribb karaktereket a kis- és nagybetűkkel eltérően, az előfordulási gyakoriságukkal együtt kapjuk meg.
fold -w1 < man.txt | sort | tr '[:lower:]' '[:upper:]' | uniq -c | sort -rn | head -20
Minta kimenet
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 .
Ellenőrizze a fenti kimenetet, ahol írásjelek szerepelnek. Lehetővé teszi az írásjelek eltávolítását a „tr” paranccsal. Essünk neki:
fold -w1 < man.txt | tr '[:lower:]' '[:upper:]' | sort | tr -d '[:punct:]' | uniq -c | sort -rn | head -20
Minta kimenet
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
Most három szöveges fájlom van, futtassuk le a fenti egy soros szkriptet a kimenet megtekintéséhez.
cat *.txt | fold -w1 | tr '[:lower:]' '[:upper:]' | sort | tr -d '[:punct:]' | uniq -c | sort -rn | head -8
Minta kimenet
11636
2504 E
2079 A
2005 T
1729 I
1645 N
1632 S
1580 O
Ezután azokat a ritka betűket fogjuk generálni, amelyek legalább tíz betű hosszúak. Íme az egyszerű forgatókönyv.
cat man.txt | tr '' '2' | tr '[:upper:]' '[:lower:]' | tr -d '[:punct:]' | tr -d '[0-9]' | sort | uniq -c | sort -n | grep -E '..................' | head
Minta kimenet
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
Megjegyzés: A fenti szkriptben egyre több pont az összes eredmény generálásáig. A .{10} segítségével tíz karakteregyezést kaphatunk.
Ezek az egyszerű szkriptek a leggyakrabban előforduló angol szavakat és karaktereket is megismertetik velünk.
Ez minden most. Újra itt leszek egy másik érdekes és nem aktuális témával, amelyet érdemes tudni, és ti, emberek, szívesen olvastok majd. Ne felejtse el megadni nekünk értékes visszajelzését az alábbi megjegyzés részben.
Olvassa el még: A Linux 20 vicces parancsa