Hauskaa Linux-päätteessä - Pelaa sana- ja merkkimäärällä
Linuxin komentorivillä on paljon hauskaa ympärillään ja monet ikävät tehtävät voidaan suorittaa erittäin helposti mutta täydellisesti. Aiomme nähdä tässä artikkelissa pelaamisen sanoilla ja merkeillä, niiden esiintymistiheydellä tekstitiedostossa jne.
Ainoa mieleemme tuleva komento Linuxin komentorivin säätämiseksi tekstitiedoston sanojen ja merkkien muokkaamiseksi on wc-komento.
wc-komento, joka tarkoittaa sanamäärää, pystyy tulostamaan rivinvaihto-, sana- ja tavumäärät tekstitiedostosta.
Jotta voimme työskennellä pienten komentosarjojen kanssa tekstitiedoston analysoimiseksi, meillä on oltava tekstitiedosto. Yhdenmukaisuuden säilyttämiseksi luomme tekstitiedoston, jossa on man-komennon tulos alla kuvatulla tavalla.
man man > man.txt
Yllä oleva komento luo tekstitiedoston man.txt, jonka sisältö on manuaalinen sivu komennolla man.
Haluamme tarkistaa yleisimmät sanat yllä luodusta 'tekstitiedostosta' suorittamalla alla oleva komentosarja.
cat man.txt | tr ' ' '2' | tr '[:upper:]' '[:lower:]' | tr -d '[:punct:]' | grep -v '[^a-z]' | sort | uniq -c | sort -rn | head
Näytelähtö
7557
262 the
163 to
112 is
112 a
78 of
78 manual
76 and
64 if
63 be
Yllä oleva yksilinjainen yksinkertainen kirjoitus näyttää kymmenen yleisimmin esiintyvää sanaa ja niiden esiintymistiheyden tekstitiedostossa.
Entäpä sanan jakaminen yksilöiksi käyttämällä seuraavaa komentoa.
echo 'tecmint team' | fold -w1
Näytelähtö
t
e
c
m
i
n
t
t
e
a
m
Huomaa: tässä -w1 tarkoittaa leveyttä.
Nyt erittelemme tekstitiedoston jokaisen sanan, lajittelemme tuloksen ja saamme halutun tulosteen kymmenen yleisimmän merkin taajuudella.
fold -w1 < man.txt | sort | uniq -c | sort -rn | head
Näytelähtö
8579
2413 e
1987 a
1875 t
1644 i
1553 n
1522 o
1514 s
1224 r
1021 l
Entä jos saisit tekstitiedoston yleisimmät merkit isoilla ja pienillä kirjaimilla eri tavalla sekä niiden esiintymistiheyden.
fold -w1 < man.txt | sort | tr '[:lower:]' '[:upper:]' | uniq -c | sort -rn | head -20
Näytelähtö
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 .
Tarkista yllä oleva tuloste, jossa on välimerkki. Poistaa välimerkit tr-komennolla. Nyt sitä mennään:
fold -w1 < man.txt | tr '[:lower:]' '[:upper:]' | sort | tr -d '[:punct:]' | uniq -c | sort -rn | head -20
Näytelähtö
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
Nyt minulla on kolme tekstitiedostoa. Suorita yllä oleva yksi liner-skripti nähdäksesi tulosteen.
cat *.txt | fold -w1 | tr '[:lower:]' '[:upper:]' | sort | tr -d '[:punct:]' | uniq -c | sort -rn | head -8
Näytelähtö
11636
2504 E
2079 A
2005 T
1729 I
1645 N
1632 S
1580 O
Seuraavaksi luomme ne harvoin esiintyvät kirjaimet, jotka ovat vähintään kymmenen kirjaimen pituisia. Tässä on yksinkertainen käsikirjoitus.
cat man.txt | tr '' '2' | tr '[:upper:]' '[:lower:]' | tr -d '[:punct:]' | tr -d '[0-9]' | sort | uniq -c | sort -n | grep -E '..................' | head
Näytelähtö
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
Huomaa: Yllä olevaan skriptiin lisätään ja enemmän pisteitä, kunnes kaikki tulokset on luotu. Voimme käyttää .{10} saadaksemme kymmenen merkkiä.
Nämä yksinkertaiset skriptit saavat meidät tuntemaan myös useimmin esiintyvät sanat ja merkit englanniksi.
Tässä kaikki tältä erää. Tulen tänne taas kertomaan toisen mielenkiintoisen ja tietävän aiheen, jota te ihmiset rakastatte lukea. Älä unohda antaa meille arvokasta palautetta alla olevassa kommenttiosiossa.
Lue myös: 20 hauskaa Linuxin komentoa