GNU/Linux >> Tutoriales Linux >  >> Linux

cómo fusionar dos archivos consistentemente línea por línea

Este resumen de Perl mostrará los cambios de nombre necesarios:

perl -e 'open $f[$_-1], "file$_.txt" for 1,2; print "rename @n\n" while chomp(@n = map ''.<$_>, @f)'

Si esto funciona para usted, reemplace el print declaración con un cambio de nombre real y uso

perl -e 'open $f[$_-1], "file$_.txt" for 1,2; rename @n while chomp(@n = map ''.<$_>, @f)'

para hacer el cambio de nombre real.


Puedes usar paste para formatear los archivos uno al lado del otro:

$ paste -d" " file1.txt file2.txt
/etc/port1-192.9.200.1-255.555.255.0 /etc/port1-192.90.2.1-255.555.0.0
/etc/port2-192.9.200.1-255.555.255.0 /etc/port2-192.90.2.1-255.555.0.0
/etc/port3-192.9.200.1-255.555.255.0 /etc/port3-192.90.2.1-255.555.0.0
/etc/port4-192.9.200.1-255.555.255.0 /etc/port4-192.90.2.1-255.555.0.0
/etc/port5-192.9.200.1-255.555.255.0 /etc/port5-192.90.2.1-255.555.0.0

Por ejemplo:

$ paste -d" " file1.txt file2.txt | while read from to; do echo mv "${from}" "${to}"; done
mv /etc/port1-192.9.200.1-255.555.255.0 /etc/port1-192.90.2.1-255.555.0.0
mv /etc/port2-192.9.200.1-255.555.255.0 /etc/port2-192.90.2.1-255.555.0.0
mv /etc/port3-192.9.200.1-255.555.255.0 /etc/port3-192.90.2.1-255.555.0.0
mv /etc/port4-192.9.200.1-255.555.255.0 /etc/port4-192.90.2.1-255.555.0.0
mv /etc/port5-192.9.200.1-255.555.255.0 /etc/port5-192.90.2.1-255.555.0.0

Por supuesto, le gustaría incluir algunas comprobaciones de seguridad ([ -f "${from}" ] , ...).

Descargo de responsabilidad:solo funciona si no hay espacios en sus nombres de archivo.


paste -d " " file1.txt file2.txt

funciona muy bien para este trabajo.

Pero en caso de que esté manejando archivos de texto en un entorno Windows y haga uso de GNU paste, asegúrese de transformar los archivos a formato Unix (CR) y no use archivos con (CR-LF).

GNU paste no parece manejar correctamente los formatos DOS y el análisis es impredecible. El resultado esperado es errático e inesperado sin advertencias.

Puede usar gVim para transformarlos fácilmente (menú EditarConfiguración de archivoFormato de archivo ).


Linux
  1. Cómo unir dos archivos de texto en Linux

  2. ¿Imprimir dos archivos en dos columnas?

  3. Cómo comparar el contenido de dos tarball

  4. ¿Cómo fusionar dos bibliotecas estáticas ar en una?

  5. ¿Cómo fusionar dos archivos usando AWK?

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

Cómo comparar y fusionar archivos de texto en Linux

Cómo comparar y fusionar archivos de texto en Linux (parte 2)

Cómo realizar una búsqueda de patrones en archivos usando Grep

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

Cómo comparar dos archivos en la terminal de Linux