Zabava u Linux terminalu - igrajte se s brojem riječi i znakova
Linux komandna linija ima mnogo zabave oko sebe i mnogi zamorni zadaci se mogu izvesti vrlo lako, ali sa savršenstvom. Igranje s riječima i znakovima, njihovom učestalošću u tekstualnoj datoteci, itd. je ono što ćemo vidjeti u ovom članku.
Jedina komanda koja nam pada na pamet, za podešavanje Linux komandne linije za manipulaciju riječima i znakovima iz tekstualne datoteke je wc komanda.
Komanda 'wc' koja je skraćenica za broj riječi može ispisati novi red, broj riječi i bajtova iz tekstualne datoteke.
Da bismo radili sa malim skriptama za analizu tekstualne datoteke, moramo imati tekstualnu datoteku. Da bismo održali uniformnost, kreiramo tekstualnu datoteku sa izlazom man komande, kao što je opisano u nastavku.
man man > man.txt
Gornja komanda kreira tekstualnu datoteku „man.txt“ sa sadržajem „ručne stranice“ za naredbu „man“.
Želimo provjeriti najčešće riječi u gore kreiranom „Text File“ tako što ćemo pokrenuti donju skriptu.
cat man.txt | tr ' ' '2' | tr '[:upper:]' '[:lower:]' | tr -d '[:punct:]' | grep -v '[^a-z]' | sort | uniq -c | sort -rn | head
Sample Output
7557
262 the
163 to
112 is
112 a
78 of
78 manual
76 and
64 if
63 be
Gornja jednostavna skripta u jednoj liniji prikazuje deset najčešće pojavljivanja riječi i njihovu učestalost pojavljivanja u tekstualnoj datoteci.
Šta kažete na raščlanjivanje riječi na pojedinačne pomoću sljedeće naredbe.
echo 'tecmint team' | fold -w1
Sample Output
t
e
c
m
i
n
t
t
e
a
m
Napomena: Ovdje je '-w1' za širinu.
Sada ćemo raščlaniti svaku riječ u tekstualnoj datoteci, sortirati rezultat i dobiti željeni rezultat sa frekvencijom od deset najčešćih znakova.
fold -w1 < man.txt | sort | uniq -c | sort -rn | head
Sample Output
8579
2413 e
1987 a
1875 t
1644 i
1553 n
1522 o
1514 s
1224 r
1021 l
Što kažete na to da najčešće znakove u tekstualnoj datoteci dobijete velikim i malim slovima na različite načine zajedno s njihovom učestalošću pojavljivanja.
fold -w1 < man.txt | sort | tr '[:lower:]' '[:upper:]' | uniq -c | sort -rn | head -20
Sample Output
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 znak interpunkcije. Omogućava uklanjanje interpunkcijskih znakova naredbom „tr“. Idemo:
fold -w1 < man.txt | tr '[:lower:]' '[:upper:]' | sort | tr -d '[:punct:]' | uniq -c | sort -rn | head -20
Sample Output
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 tekstualna fajla, hajde da pokrenemo gornju jednu linijsku skriptu da vidimo izlaz.
cat *.txt | fold -w1 | tr '[:lower:]' '[:upper:]' | sort | tr -d '[:punct:]' | uniq -c | sort -rn | head -8
Sample Output
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 jednostavne skripte.
cat man.txt | tr '' '2' | tr '[:upper:]' '[:lower:]' | tr -d '[:punct:]' | tr -d '[0-9]' | sort | uniq -c | sort -n | grep -E '..................' | head
Sample Output
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 i više tačaka u gornjoj skripti dok se ne generišu svi rezultati. Možemo koristiti .{10} da dobijemo deset podudaranja znakova.
Ove jednostavne skripte nam također omogućavaju da znamo najčešće riječi i znakove koji se pojavljuju na engleskom.
To je sve za sada. Ponovo ću biti ovdje sa još jednom zanimljivom temom van ritma koju vrijedi znati, a koju ćete voljeti čitati. Ne zaboravite nam dati svoje vrijedne povratne informacije u odjeljku za komentare, ispod.
Pročitajte također: 20 smiješnih naredbi Linuxa