Zabava u Linux terminalu - igrajte se s brojem riječi i znakova
Naredbeni redak Linuxa ima puno zabave oko sebe i mnogi zamorni zadaci mogu se obaviti vrlo lako, ali savršeno. Igranje s riječima i znakovima, njihova učestalost u tekstualnoj datoteci itd. ono je što ćemo vidjeti u ovom članku.
Jedina naredba koja nam pada na pamet za podešavanje naredbenog retka Linuxa za manipuliranje riječima i znakovima iz tekstualne datoteke je naredba wc.
Naredba ‘wc’ koja označava brojanje riječi može ispisati novi red, broj riječi i bajtova iz tekstualne datoteke.
Da bismo radili s malim skriptama za analizu tekstualne datoteke, moramo imati tekstualnu datoteku. Kako bismo održali uniformnost, stvaramo tekstualnu datoteku s izlazom naredbe man, kao što je opisano u nastavku.
man man > man.txt
Gornja naredba stvara tekstualnu datoteku ‘man.txt’ sa sadržajem ‘stranice priručnika’ za naredbu ‘man’.
Želimo provjeriti najčešće riječi u gore stvorenoj 'Tekstualnoj datoteci' pokretanjem donje skripte.
cat man.txt | tr ' ' '2' | tr '[:upper:]' '[:lower:]' | tr -d '[:punct:]' | grep -v '[^a-z]' | sort | uniq -c | sort -rn | head
Uzorak izlaza
7557
262 the
163 to
112 is
112 a
78 of
78 manual
76 and
64 if
63 be
Gornja jednostavna skripta prikazuje deset riječi koje se najčešće pojavljuju i njihovu učestalost pojavljivanja u tekstualnoj datoteci.
Što kažete na rastavljanje riječi na pojedinačne pomoću sljedeće naredbe.
echo 'tecmint team' | fold -w1
Uzorak izlaza
t
e
c
m
i
n
t
t
e
a
m
Napomena: Ovdje je '-w1' za širinu.
Sada ćemo rastaviti svaku pojedinačnu riječ u tekstualnoj datoteci, sortirati rezultat i dobiti željeni izlaz s učestalošću deset najčešćih znakova.
fold -w1 < man.txt | sort | uniq -c | sort -rn | head
Uzorak izlaza
8579
2413 e
1987 a
1875 t
1644 i
1553 n
1522 o
1514 s
1224 r
1021 l
Što kažete na dobivanje najčešćih znakova u tekstualnoj datoteci s različitim velikim i malim slovima zajedno s njihovom učestalošću pojavljivanja.
fold -w1 < man.txt | sort | tr '[:lower:]' '[:upper:]' | uniq -c | sort -rn | head -20
Uzorak izlaza
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 .
Provjerite gornji izlaz, gdje je uključen interpunkcijski znak. Uklonimo interpunkcijske znakove pomoću naredbe ‘tr’. Idemo:
fold -w1 < man.txt | tr '[:lower:]' '[:upper:]' | sort | tr -d '[:punct:]' | uniq -c | sort -rn | head -20
Uzorak izlaza
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
Sada imam tri tekstualne datoteke, pokrenimo gornju jednu skriptu za crtanje da vidimo izlaz.
cat *.txt | fold -w1 | tr '[:lower:]' '[:upper:]' | sort | tr -d '[:punct:]' | uniq -c | sort -rn | head -8
Uzorak izlaza
11636
2504 E
2079 A
2005 T
1729 I
1645 N
1632 S
1580 O
Zatim ćemo generirati ona rijetka slova koja imaju najmanje deset slova. Evo jednostavnog scenarija.
cat man.txt | tr '' '2' | tr '[:upper:]' '[:lower:]' | tr -d '[:punct:]' | tr -d '[0-9]' | sort | uniq -c | sort -n | grep -E '..................' | head
Uzorak izlaza
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
Napomena: Sve više točaka u gornjoj skripti dok se ne generiraju svi rezultati. Možemo koristiti .{10} da dobijemo deset podudaranja znakova.
Ove jednostavne skripte također nam daju saznati riječi i znakove koji se najčešće pojavljuju u engleskom jeziku.
To je sve za sada. Ponovno ću biti ovdje s još jednom zanimljivom i neuobičajenom temom koju vrijedi znati, a koju ćete voljeti čitati. Ne zaboravite nam dati svoje vrijedne povratne informacije u odjeljku za komentare u nastavku.
Pročitajte također: 20 smiješnih naredbi Linuxa