GNU/Linux >> Tutoriales Linux >  >> Linux

¿Imprimir dos archivos en dos columnas?

Quiero imprimir dos archivos en dos columnas:el primer archivo en el lado izquierdo y el segundo en el lado derecho.

paste no hace el trabajo, porque solo puede insertar un carácter como delimitador, por lo que si las primeras líneas del archivo tienen una longitud diferente, la salida se torcerá:

$ cat file1
looooooooong line
line
$ cat file2
hello
world
$ paste file1 file2
looooooooong line   hello
line    world

Si fuera un comando para agregar espacios finales como fmt --add-spaces --width 50 el problema estaría resuelto:

$ paste <(fmt --add-spaces --width 50 file1) file2
looooooooong line                                 hello
line                                              world

Pero no conozco una forma sencilla de hacerlo.

Entonces, ¿cómo fusionar e imprimir varios archivos horizontalmente sin torcerlos? En realidad, solo quiero mirarlos simultáneamente.

UPD: existe un comando para agregar espacios finales (por ejemplo, xargs -d 'n' printf '%-50sn' )

Pero solución como

$ paste <(add-trailing-spaces file1) file2

no funciona como se esperaba cuando el archivo 1 tiene menos líneas que el archivo 2.

Respuesta aceptada:

¿Qué pasa con paste file{1,2}| column -s $'t' -tn ?

looooooooong line line  hello
line                    world
  • Esto está diciendo column para usar Tab como separador de columnas donde lo tomamos del paste comando que es el separador predeterminado allí si no se especifica; generalmente:

    paste -d'X' file{1,2}| column -s $'X' -tn

    donde X significa cualquier carácter único. Debe elegir el que le otorgó que no ocurrirá en sus archivos.

  • El -t se utiliza para determinar el número de columnas que contiene la entrada.

  • Esto no agregará una pestaña larga entre dos archivos, mientras que otras respuestas sí lo hacen.
  • esto funcionará incluso si hubiera líneas vacías en el archivo 1 y no imprimirá el segundo archivo en el área de impresión del archivo 1 , consulte la entrada/salida a continuación

    Archivo de entrada 1:

    looooooooong line
    
    line
    

    Archivo de entrada 2:

    hello
    world
    

    Salida:

    looooooooong line  hello
                       world
    line
    

Linux
  1. ¿Comparar dos columnas de diferentes archivos e imprimir si coincide?

  2. ¿Imprimir todos los archivos en una carpeta?

  3. ¿Líneas comunes entre dos archivos?

  4. Mostrar dos archivos uno al lado del otro

  5. Convertir JSON pretty print en una línea

Imprima archivos desde su terminal Linux

Cómo leer archivos línea por línea en Bash

Cómo mostrar dos archivos uno al lado del otro en Linux

Cómo comparar dos archivos en la terminal de Linux

Comparando dos archivos en la terminal de Linux

Diferencia en espacios en blanco entre dos archivos en Linux