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