Sjov i Linux Terminal - Spil med Word og Character Counts
Linux-kommandolinjen har meget sjov omkring sig selv, og mange kedelige opgaver kan udføres meget let, men alligevel med perfektion. At lege med ord og tegn, deres hyppighed i en tekstfil osv. Er, hvad vi skal se i denne artikel.
Den eneste kommando, der kommer til at tænke på os, at tilpasse Linux-kommandolinjen til at manipulere ord og tegn fra en tekstfil er wc-kommandoen.
En 'wc' kommando, der står for antal ord, er i stand til at udskrive Newline, ord og byte tæller fra en tekstfil.
For at arbejde med de små scripts til at analysere tekstfil skal vi have en tekstfil. For at opretholde ensartethed opretter vi en tekstfil med output fra man-kommandoen som beskrevet nedenfor.
$ man man > man.txt
Ovenstående kommando opretter en tekstfil 'man.txt' med indholdet af 'manuel side' til 'mand' kommando.
Vi ønsker at kontrollere de mest almindelige ord i ovenstående oprettede 'Tekstfil' ved at køre nedenstående script.
$ cat man.txt | tr ' ' '2' | tr '[:upper:]' '[:lower:]' | tr -d '[:punct:]' | grep -v '[^a-z]' | sort | uniq -c | sort -rn | head
7557 262 the 163 to 112 is 112 a 78 of 78 manual 76 and 64 if 63 be
Ovenstående viser et enkelt script, de ti hyppigst forekommende ord og deres hyppighed af udseende, i tekstfilen.
Hvad med at nedbryde et ord i individ ved hjælp af følgende kommando.
$ echo 'tecmint team' | fold -w1
t e c m i n t t e a m
Bemærk: Her er '-w1' for bredden.
Nu vil vi nedbryde hvert eneste ord i en tekstfil, sortere resultatet og få det ønskede output med hyppigheden af ti hyppigste tegn.
$ fold -w1 < man.txt | sort | uniq -c | sort -rn | head
8579 2413 e 1987 a 1875 t 1644 i 1553 n 1522 o 1514 s 1224 r 1021 l
Hvad med at få de hyppigste tegn i tekstfilen med store og små bogstaver forskelligt sammen med deres forekomstfrekvens.
$ fold -w1 < man.txt | sort | tr '[:lower:]' '[:upper:]' | uniq -c | sort -rn | head -20
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 .
Kontroller ovenstående output, hvor tegnsætningstegn er inkluderet. Lad os fjerne tegnsætning med kommandoen 'tr'. Nu sker det:
$ fold -w1 < man.txt | tr '[:lower:]' '[:upper:]' | sort | tr -d '[:punct:]' | uniq -c | sort -rn | head -20
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
Nu har jeg tre tekstfiler, lad os køre ovenstående linjeskript for at se output.
$ cat *.txt | fold -w1 | tr '[:lower:]' '[:upper:]' | sort | tr -d '[:punct:]' | uniq -c | sort -rn | head -8
11636 2504 E 2079 A 2005 T 1729 I 1645 N 1632 S 1580 O
Derefter genererer vi de sjældne bogstaver, der er mindst ti bogstaver lange. Her er det enkle script.
$ cat man.txt | tr '' '2' | tr '[:upper:]' '[:lower:]' | tr -d '[:punct:]' | tr -d '[0-9]' | sort | uniq -c | sort -n | grep -E '..................' | head
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
Bemærk: De flere og flere prikker i ovenstående script, indtil alle resultater genereres. Vi kan bruge. {10} til at få ti karakterkampe.
Disse enkle scripts gør os også bekendt med de hyppigst forekommende ord og tegn på engelsk.
Det er alt for nu. Jeg kommer her igen med et andet interessant og uhensigtsmæssigt emne, der er værd at vide, som I mennesker vil elske at læse. Glem ikke at give os din værdifulde feedback i kommentarsektionen nedenfor.
Læs også: 20 sjove kommandoer fra Linux