Puede hacerlo fácilmente con los comandos integrados.
- Alimenta el contenido del archivo
sort
. Necesitamos esto para el siguiente paso.
- Esto va a
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.
- Luego, aliméntelo a otro
sort
, que ahora se ordena en orden inverso ( r
) y se basa en la n
interpretación numérica ( ) de la uniq
salida. 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 GNUsort
para obtener más información).
- Finalmente, solo muestre las primeras doce líneas con
head
.
El comando sería entonces:
sort test.txt | uniq -c | sort -rn | head -n 12
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
:
sort test.txt | uniq -c | sort -rn | head -n 12 | sed -E 's/^ *[0-9]+ //g'
Ejemplo:
I'm not there very often
I'm not there very often
Look at me!
Look at me!
Look at me!
Hello there!
Hello there!
Hello there!
Hello there!
Hello there!
Hello there!
Salida del primer comando, pero solo seleccionando 2 de head
:
6 Hello there!
3 Look at me!
Salida del segundo comando:
Hello there!
Look at me!