Tenía un comando que funcionaba a través de un archivo de texto, contaba todas las apariciones de las palabras e imprimía así:
user@box $˜ magic-command-i-forgot | with grep | and awk | sort ./textfile.txt
66: the
54: and
32: I
16: unix
12: bash
5: internet
3: sh
1: GNU/Linux
Por lo tanto, no busca línea por línea, sino palabra por palabra, y lo hace para todas las palabras, no solo para 1 palabra. Lo encontré en algún lugar de Internet hace mucho tiempo, pero no puedo encontrarlo ni recordarlo.

tr -spara manejar múltiples espacios, especialmente cuando encuentre sangría.-g(--general-numeric-sort) opción desortpuede ser preferible en algunos casos. Por ejemplosort -n, mantendrá10\n1 4como está, tratando1 4como14, mientras quesort -gse tratará correctamente como1 4\n10.echo "Lorem ipsum dolor sit sit amet et cetera." | tr ' ' '\n' | grep -v "^$" | sort | uniq -c | sort -bnrTenga en cuenta que soy un principiante, por lo que puedo estar equivocado, no dude en aconsejarme.Para dividir la entrada en palabras, reemplace cualquier carácter que considere un separador de palabras por una nueva línea.
fuente
No utilizo grep y awk pero parece hacer lo que quiere:
fuente
set -f) y trata la puntuación como parte de las palabras (que se pueden corregir de manera incómoda agregando caracteres de puntuación aIFS- buena suerte tratando de admitir conjuntos de caracteres no ASCII). Esto no será bueno con archivos de entrada muy grandes, ya que almacena todo el archivo en la memoria (sortes más inteligente).Creo que buscas algo como esto?
por supuesto, también puedes hacer lo mismo
awk:)fuente
Usando
awk/sort/uniqsolución:fuente
ordena ascendente después de dividir el archivo en palabras.
El grep simple encontrará
fishenfisheye, por lo que debe mejorar el comando grep para evitar coincidencias parciales.Toma alrededor de 3 segundos para un archivo de texto de 25k en una máquina en las edades, HDD clásico (IDE).
Para archivos más grandes o operaciones realizadas con frecuencia, un enfoque de mapa hash sería mejor, pero para un trabajo que rara vez se ejecuta o solo archivos más pequeños, podría ser suficiente.
fuente