Búsqueda de sitios web

Diversión en la terminal de Linux: juegue con recuentos de palabras y caracteres


La línea de comandos de Linux es muy divertida y muchas tareas tediosas se pueden realizar muy fácilmente pero a la perfección. Jugar con palabras y caracteres, su frecuencia en un archivo de texto, etc es lo que vamos a ver en este artículo.

El único comando que nos viene a la mente para modificar la línea de comandos de Linux para manipular palabras y caracteres de un archivo de texto es el comando wc.

Un comando 'wc' que significa recuento de palabras es capaz de imprimir recuentos de nuevas líneas, palabras y bytes desde un archivo de texto.

Para trabajar con los pequeños scripts para analizar archivos de texto, debemos tener un archivo de texto. Para mantener la uniformidad, estamos creando un archivo de texto con la salida del comando man, como se describe a continuación.

man man > man.txt

El comando anterior crea un archivo de texto 'man.txt' con el contenido de 'página de manual' para el comando 'man'.

Queremos verificar las palabras más comunes en el 'Archivo de texto' creado anteriormente ejecutando el siguiente script.

cat man.txt | tr ' '  '2' | tr '[:upper:]' '[:lower:]' | tr -d '[:punct:]' | grep -v '[^a-z]' | sort | uniq -c | sort -rn | head
Salida de muestra
7557 
262 the 
163 to 
112 is 
112 a 
78 of 
78 manual 
76 and 
64 if 
63 be

El guión simple de una línea anterior muestra las diez palabras que aparecen con mayor frecuencia y su frecuencia de aparición en el archivo de texto.

¿Qué tal dividir una palabra en individuos usando el siguiente comando?

echo 'tecmint team' | fold -w1
Salida de muestra
t 
e 
c 
m 
i 
n 
t 
t 
e 
a 
m

Nota: Aquí, "-w1" es para el ancho.

Ahora dividiremos cada palabra en un archivo de texto, ordenaremos el resultado y obtendremos el resultado deseado con la frecuencia de los diez caracteres más frecuentes.

fold -w1 < man.txt | sort | uniq -c | sort -rn | head
Salida de muestra
8579  
2413 e
1987 a
1875 t
1644 i
1553 n
1522 o
1514 s
1224 r
1021 l

¿Qué tal si obtenemos los caracteres más frecuentes en el archivo de texto con mayúsculas y minúsculas de manera diferente junto con su frecuencia de aparición?

fold -w1 < man.txt | sort | tr '[:lower:]' '[:upper:]' | uniq -c | sort -rn | head -20
Salida de muestra
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 .

Verifique el resultado anterior, donde se incluye el signo de puntuación. Eliminemos la puntuación con el comando 'tr'. Aquí vamos:

fold -w1 < man.txt | tr '[:lower:]' '[:upper:]' | sort | tr -d '[:punct:]' | uniq -c | sort -rn | head -20
Salida de muestra
  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

Ahora tengo tres archivos de texto, ejecutemos el script de una línea anterior para ver el resultado.

cat *.txt | fold -w1 | tr '[:lower:]' '[:upper:]' | sort | tr -d '[:punct:]' | uniq -c | sort -rn | head -8
Salida de muestra
  11636  
   2504 E 
   2079 A 
   2005 T 
   1729 I 
   1645 N 
   1632 S 
   1580 O

A continuación generaremos esas letras poco frecuentes que tienen al menos diez letras de largo. Aquí está el guión simple.

cat man.txt | tr '' '2' | tr '[:upper:]' '[:lower:]' | tr -d '[:punct:]' | tr -d '[0-9]' | sort | uniq -c | sort -n |  grep -E '..................' | head
Salida de muestra
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: Cuanto más y más puntos haya en el script anterior hasta que se generen todos los resultados. Podemos usar .{10} para obtener coincidencias de diez caracteres.

Estos guiones sencillos también nos permiten conocer las palabras y caracteres que aparecen con más frecuencia en inglés.

Eso es todo por ahora. Estaré aquí nuevamente con otro tema interesante y fuera de lo común que vale la pena conocer y que a ustedes les encantará leer. No olvide brindarnos sus valiosos comentarios en la sección de comentarios a continuación.

Lea también: 20 comandos divertidos de Linux