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