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 usarTab
como separador de columnas donde lo tomamos delpaste
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