Diversió al terminal Linux: juga amb el recompte de paraules i caràcters


La línia d'ordres de Linux es diverteix molt al seu voltant i moltes tasques tedioses es poden realitzar amb molta facilitat però amb perfecció. Jugar amb paraules i personatges, la seva freqüència en un fitxer de text, etc. és el que veurem en aquest article.

L'única ordre que ens ve al cap, per ajustar la línia d'ordres de Linux per manipular paraules i caràcters d'un fitxer de text és l'ordre wc.

Una ordre 'wc' que significa recompte de paraules és capaç d'imprimir recomptes de noves línies, paraules i bytes des d'un fitxer de text.

Per treballar amb els petits scripts per analitzar fitxers de text, hem de tenir un fitxer de text. Per mantenir la uniformitat, estem creant un fitxer de text amb la sortida de l'ordre man, tal com es descriu a continuació.

$ man man > man.txt

L'ordre anterior crea un fitxer de text man.txt amb el contingut de pàgina de manual per a l'ordre man.

Volem comprovar les paraules més comunes, al Fitxer de text creat anteriorment executant l'script següent.

$ 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

L'escriptura simple d'una línia anterior mostra les deu paraules que apareixen amb més freqüència i la seva freqüència d'aparició al fitxer de text.

Què tal descompondre una paraula en individual mitjançant l'ordre següent.

$ echo 'tecmint team' | fold -w1
t 
e 
c 
m 
i 
n 
t 
t 
e 
a 
m

Nota: aquí, -w1 és per a l'amplada.

Ara desglossarem cada paraula en un fitxer de text, ordenarem el resultat i obtindrem la sortida desitjada amb la freqüència dels deu caràcters més freqüents.

$ 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

Què tal obtenir els caràcters més freqüents al fitxer de text amb majúscules i minúscules de manera diferent juntament amb la seva freqüència d'ocurrència?

$ 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 .

Comproveu la sortida anterior, on s'inclou el signe de puntuació. Eliminarem la puntuació, amb l'ordre tr. Aqui venim:

$ 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

Ara tinc tres fitxers de text, executem l'script de línia anterior per veure la sortida.

$ 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

A continuació, generarem aquelles lletres poc freqüents que tinguin almenys deu lletres. Aquí teniu el guió senzill.

$ 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

Nota: Cada cop hi ha més punts a l'script anterior fins que es generen tots els resultats. Podem utilitzar .{10} per obtenir deu coincidències de caràcters.

Aquests senzills scripts, també ens fan conèixer les paraules i caràcters més freqüents en anglès.

Això és tot per ara. Tornaré a ser aquí amb un altre tema interessant i fora del ritme que val la pena conèixer, que us encantarà llegir. No us oblideu de proporcionar-nos els vostres valuosos comentaris a la secció de comentaris, a continuació.

Llegiu també: 20 ordres divertides de Linux