GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo mezclar líneas en un archivo en Linux

Dado que ya se ha establecido que el sistema operativo Linux es el mejor en todos los oficios informáticos a través de los numerosos consejos y artículos sobre la línea de comandos de Linux que ha encontrado en este sitio.

Es hora de hacer crecer aún más la reputación de este sistema operativo. Como parte de la administración de archivos de Linux, buscaremos formas de mezclar líneas en un archivo que reside en un entorno de sistema operativo Linux.

Mezclar líneas en un archivo en un entorno de sistema operativo Linux puede tomar dos enfoques. En el enfoque uno, es posible que desee mezclar/reorganizar las líneas en un archivo de destino para que aparezcan en un orden requerido específico. En tal caso, se invoca un comando de clasificación.

En el enfoque 2, no tiene en cuenta el orden en que deben aparecer las líneas finales en el archivo de destino. En tales casos, un comando shuf es llamado.

Este artículo nos llevará a través de diferentes técnicas de Linux para mezclar líneas aleatoriamente en un archivo en Linux.

Enunciado del problema

Tendremos que crear un archivo de texto de muestra con unas pocas líneas al que nos referiremos mientras implementamos y ejecutamos varios comandos de reproducción aleatoria de Linux que se analizarán.

$ sudo nano sample_file.txt

Podemos usar el comando cat para la vista numerada de este archivo completo:

$ cat -n sample_file.txt

El comando gato la salida nos dice que estamos tratando con un archivo de texto con un total de 15 líneas. Además, como habrás notado, las líneas 12 a 14 son repetitivos. La aparición de estas tres líneas nos ayudará a comprender cómo funcionan los diferentes comandos de barajado.

Mezclar líneas utilizando el comando Shuf en Linux

Desde las GNU Coreutils anfitriones del paquete shuf comando, debe instalarse de forma predeterminada en la distribución de su sistema operativo Linux. La función principal del shuf El comando es generar permutaciones aleatorias basadas en una entrada que se le alimenta.

El mecanismo de trabajo del shuf el comando es el siguiente; primero carga los datos de entrada en la memoria, indica si la memoria libre es más grande que el tamaño del archivo/datos de entrada antes de continuar con su ejecución.

Su sintaxis es la siguiente:

$ shuf [TARGET_INPUT_FILE] 

En nuestro caso, su implementación será la siguiente:

$ shuf sample_file.txt

Como puede ver, hemos logrado mezclar aleatoriamente las líneas en nuestro archivo de texto de muestra. Si ejecuta el shuf comando, una y otra vez, obtendrá un resultado diferente cada vez:

$ shuf random_file.txt 

Usar el comando Ordenar para barajar líneas en Linux

Mientras que ordenar se usa principalmente para reorganizar las líneas de un archivo de una manera específica, podemos aleatorizar estas líneas de archivo si combinamos el ordenar comando con -R opción.

$ sort -R sample_file.txt 

Ejecutar el comando una y otra vez debería producir resultados diferentes cada vez.

Utilice el comando Awk para mezclar líneas de archivo en Linux

Según su página man de Linux (man awk ), wow es un lenguaje de programación de procesamiento de texto y escaneado de patrones perfecto. Sin embargo, para comprender su uso en la combinación de líneas, necesitará cierta exposición a conceptos de programación como variables, bucles (bucles while) y sentencias (sentencia if) como se muestra a continuación:

awk 'BEGIN{srand() }
{ lines[++d]=$0 }
END{
    while (1){
    if (e==d) {break}
        RANDOM = int(1 + rand() * d)
        if ( RANDOM in lines  ){
            print lines[RANDOM]
            delete lines[RANDOM]
            ++e
        }
    }
}' sample_file.txt

Ahora nos sentimos cómodos mezclando líneas en un archivo en Linux.


Linux
  1. Comando de archivo de Linux:cómo determinar el tipo de archivo en Linux

  2. Cómo guardar la salida del comando en un archivo en Linux

  3. Cómo mostrar líneas específicas de un archivo en la línea de comandos de Linux

  4. Comando wc de linux

  5. Cómo contar el número de líneas en un archivo en Linux (ejemplos de comandos wc y nl)

Cómo usar un comando de archivo en Linux

Cómo abrir un archivo en Linux

Cómo imprimir líneas duplicadas en un archivo de texto en Linux

Cómo invertir líneas en un archivo por caracteres en Linux

Cómo usar el comando lsof en Linux

Cómo usar el comando shred de Linux