scripts script programas pasar parametros operaciones manejo entorno ejemplos cadenas aritmeticas linux bash frequency letters

script - variables de entorno linux bash



Bash script para encontrar la frecuencia de cada letra en un archivo (5)

Estoy tratando de averiguar la frecuencia de aparición de cada letra en el alfabeto inglés en un archivo de entrada. ¿Cómo puedo hacer esto en un script de bash?


Aquí hay una sugerencia:

while read -n 1 c do echo "$c" done < "$INPUT_FILE" | grep ''[[:alpha:]]'' | sort | uniq -c | sort -nr


Mi solución utilizando grep , sort y uniq .

grep -o . file | sort | uniq -c

Ignorar caso:

grep -o . file | sort -f | uniq -ic


Sólo un comando awk

awk -vFS="" ''{for(i=1;i<=NF;i++)w[$i]++}END{for(i in w) print i,w[i]}'' file

Si desea que no distinga mayúsculas y minúsculas, agregue tolower()

awk -vFS="" ''{for(i=1;i<=NF;i++)w[tolower($i)]++}END{for(i in w) print i,w[i]}'' file

y si solo quieres personajes,

awk -vFS="" ''{for(i=1;i<=NF;i++){ if($i~/[a-zA-Z]/) { w[tolower($i)]++} } }END{for(i in w) print i,w[i]}'' file

y si solo desea dígitos, cambie /[a-zA-Z]/ a /[0-9]/

Si no desea mostrar unicode, export LC_ALL=C


Similar a la respuesta de mouviciel anterior, pero más genérico para las carcasas Bourne y Korn utilizadas en los sistemas BSD, cuando no tiene GNU sed, que admite / n en un reemplazo, puede realizar una barra diagonal inversa para escapar de una nueva línea:

sed -e''s/./&/ /g'' file | sort | uniq -c | sort -nr

o para evitar la división visual en la pantalla, inserte una nueva línea literal por tipo CTRL + V CTRL + J

sed -e''s/./&/^J/g'' file | sort | uniq -c | sort -nr


Una solución con sed , sort y uniq :

sed ''s//(./)//1/n/g'' file | sort | uniq -c

Esto cuenta todos los caracteres, no solo las letras. Se puede filtrar con:

sed ''s//(./)//1/n/g'' file | grep ''[A-Za-z]'' | sort | uniq -c

Si desea considerar mayúsculas y minúsculas, solo agregue una traducción:

sed ''s//(./)//1/n/g'' file | tr ''[:upper:]'' ''[:lower:]'' | grep ''[a-z]'' | sort | uniq -c