Moro i Linux-terminalen - Lek med antall ord og tegn
Linux-kommandolinjen har mye moro rundt seg selv, og mange kjedelige oppgaver kan utføres veldig enkelt, men med perfeksjon. Å leke med ord og tegn, deres frekvens i en tekstfil osv. er det vi skal se i denne artikkelen.
Den eneste kommandoen vi tenker på, for å justere Linux-kommandolinjen for å manipulere ord og tegn fra en tekstfil, er wc-kommandoen.
En 'wc'-kommando som står for ordtelling er i stand til å skrive ut nylinje-, ord- og bytetellinger fra en tekstfil.
For å jobbe med de små skriptene for å analysere tekstfil, må vi ha en tekstfil. For å opprettholde ensartethet, lager vi en tekstfil med utdata fra man-kommandoen, som beskrevet nedenfor.
man man > man.txt
Kommandoen ovenfor oppretter en tekstfil 'man.txt' med innholdet i 'manual page' for 'man'-kommandoen.
Vi ønsker å sjekke de vanligste ordene, i den ovenfor opprettede 'Tekstfil' ved å kjøre skriptet nedenfor.
cat man.txt | tr ' ' '2' | tr '[:upper:]' '[:lower:]' | tr -d '[:punct:]' | grep -v '[^a-z]' | sort | uniq -c | sort -rn | head
Eksempelutgang
7557
262 the
163 to
112 is
112 a
78 of
78 manual
76 and
64 if
63 be
Det enkle skriptet ovenfor viser de ti oftest forekommende ordene og hvor ofte de vises i tekstfilen.
Hva med å dele opp et ord til enkeltpersoner ved å bruke følgende kommando.
echo 'tecmint team' | fold -w1
Eksempelutgang
t
e
c
m
i
n
t
t
e
a
m
Merk: Her er '-w1' for bredde.
Nå skal vi bryte ned hvert eneste ord i en tekstfil, sortere resultatet og få ønsket utgang med frekvensen på ti mest hyppige tegn.
fold -w1 < man.txt | sort | uniq -c | sort -rn | head
Eksempelutgang
8579
2413 e
1987 a
1875 t
1644 i
1553 n
1522 o
1514 s
1224 r
1021 l
Hva med å få de hyppigste tegnene i tekstfilen med store og små bokstaver forskjellig sammen med deres forekomstfrekvens.
fold -w1 < man.txt | sort | tr '[:lower:]' '[:upper:]' | uniq -c | sort -rn | head -20
Eksempelutgang
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 .
Sjekk utgangen ovenfor, hvor skilletegn er inkludert. Lar skille ut tegnsetting med «tr»-kommandoen. Her går vi:
fold -w1 < man.txt | tr '[:lower:]' '[:upper:]' | sort | tr -d '[:punct:]' | uniq -c | sort -rn | head -20
Eksempelutgang
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
Nå har jeg tre tekstfiler, la oss kjøre det ovennevnte one liner-skriptet for å se utdataene.
cat *.txt | fold -w1 | tr '[:lower:]' '[:upper:]' | sort | tr -d '[:punct:]' | uniq -c | sort -rn | head -8
Eksempelutgang
11636
2504 E
2079 A
2005 T
1729 I
1645 N
1632 S
1580 O
Deretter vil vi generere de sjeldne bokstavene som er minst ti bokstaver lange. Her er det enkle manuset.
cat man.txt | tr '' '2' | tr '[:upper:]' '[:lower:]' | tr -d '[:punct:]' | tr -d '[0-9]' | sort | uniq -c | sort -n | grep -E '..................' | head
Eksempelutgang
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
Merk: Jo flere og flere prikker i skriptet ovenfor til alle resultatene er generert. Vi kan bruke .{10} for å få ti tegntreff.
Disse enkle skriptene får oss også til å kjenne de vanligste ordene og tegnene på engelsk.
Det er alt for nå. Jeg vil være her igjen med et annet interessant og off the beat-emne som er verdt å vite, som dere vil elske å lese. Ikke glem å gi oss din verdifulle tilbakemelding i kommentarfeltet nedenfor.
Les også: 20 morsomme kommandoer i Linux