Tengo un archivo de texto que tiene varias palabras por línea.
¿Cómo puedo encontrar las 12 líneas que aparecen con más frecuencia en el archivo y mostrarlas?
No soy muy bueno con los comandos de secuencias de comandos.
Si pudiera obtener el comando y una explicación para poder entender cómo usarlo y ampliar mi conocimiento sobre los comandos, ¡sería genial!

Respuestas:
Puede hacerlo fácilmente con los comandos integrados.
sort. Necesitamos esto para el siguiente paso.uniq -c. Contará la ocurrencia única de cada línea. Si las líneas similares no son adyacentes, esto no habría funcionado sin ordenar antes.sort, que ahora se ordena en orden inverso (r) y se basa en laninterpretación numérica ( ) de launiqsalida. Necesitamos la opción numérica, ya que de lo contrario, el espacio delante de los números conduciría a resultados incorrectos (consulte la ayuda de GNUsortpara obtener más información).head.El comando sería entonces:
La salida aquí contiene el recuento real de las ocurrencias.
Para obtener solo la lista sin formato de líneas, puede canalizar la salida a
sed:Ejemplo:
Salida del primer comando, pero solo seleccionando 2 de
head:Salida del segundo comando:
fuente
uniq.sort -rntipo en orden inverso usando como campo de clasificación el número al lado de cada línea producidauniq -c? Pensé quek1se usaría algo así o algo asírinvierte ynordena numéricamente el número producido poruniq. ¿A qué te refieres exactamentek1?many entendí que una sintaxis que usa-kalgo debe usarse para elegir el campo por el cual ordenarSi tu distribución tiene logtop
Si su archivo está en constante crecimiento, como un archivo de registro, intente:
fuente