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