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