Tutorial del comando shuf de Linux para principiantes (con ejemplos)
Si alguna vez has jugado al juego de las cartas, es probable que conozcas el término barajar. Un poco difícil de imaginar, hay una herramienta de línea de comandos de Linux que hace exactamente eso con las líneas de los archivos. En este tutorial, hablaremos de los fundamentos del comando «shuf» utilizando algunos ejemplos fáciles de entender.
Pero antes de hacerlo, vale la pena mencionar que todos los ejemplos aquí han sido probados en una máquina Ubuntu 18.04 LTS.
Comando shuf de Linux
El comando shuf en Linux te permite generar permutaciones aleatorias. A continuación se muestra su sintaxis:
shuf [OPTION]... [FILE]
Y así es como lo explica la página man de la herramienta:
Write a random permutation of the input lines to standard output.
A continuación hay algunos ejemplos de estilo Q&A que deberían darte una mejor idea de cómo funciona el comando shuf.
Q1. ¿Cómo se utiliza el comando shuf ?
El uso básico es muy sencillo. Sólo tienes que pasar un nombre de archivo como entrada. Aquí tienes un ejemplo:
shuf test.txt
El archivo test.txt contiene las siguientes líneas:
1
2
3
4
5
6
7
8
9
Pero el comando shuf anterior produjo la siguiente salida:
3
4
6
5
1
8
2
7
9
Así que puedes ver que las líneas se han barajado.
Q2. ¿Cómo limitar el número de líneas en la salida?
Si quieres limitar el número de líneas en la salida de shuf, utiliza la opción de línea de comandos -n, que requiere que pases un número que represente el número máximo de líneas que quieres en la salida.
Por ejemplo:
shuf -n 3 test.txt
El comando anterior produjo la siguiente salida:
6
4
9
Q3. ¿Cómo permitir la repetición de líneas en la salida?
Supón que el archivo de entrada contiene 9 líneas, pero quieres que shuf produzca más líneas en la salida (utilizando la opción -n comentada anteriormente). Esto se puede hacer con la opción -r.
-r, --repeat
output lines can be repeated
Así que si quieres que shuf produzca 25 líneas en la salida, entonces ejecuta el siguiente comando:
shuf -r -n 25 test.txt
Esta es la salida que produjo este comando:
6
8
4
5
9
3
3
1
2
5
7
5
9
5
8
5
2
8
8
7
4
4
8
5
3
Q4. ¿Cómo hacer que shuf trate los argumentos de entrada como líneas?
Para ello, utiliza la opción de línea de comandos -e. Aquí tienes un ejemplo:
shuf -e 1 2 3 4 5 6 7 8 9
Esta es la salida producida por este comando:
9
1
7
8
6
2
3
5
4
Conclusión
De acuerdo, shuf no es el tipo de herramienta que necesitarías todos los días, pero no hay nada malo en conocer esta utilidad, especialmente porque su curva de aprendizaje no es tan pronunciada. Cuando termines de practicar lo que hemos comentado aquí, dirígete a lapágina man de la herramienta para saber más sobre ella.