GNU/Linux >> Znalost Linux >  >> Linux

jak spojit dva soubory konzistentně řádek po řádku

Tento jednořádkový Perl zobrazí potřebná přejmenování:

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

Pokud vám to vyhovuje, nahraďte print výpis se skutečným přejmenováním a použitím

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

provést skutečné přejmenování.


Můžete použít paste pro formátování souborů vedle sebe:

$ 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

Např.:

$ 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

Samozřejmě byste chtěli provést nějaké bezpečnostní kontroly ([ -f "${from}" ] , ...).

Zřeknutí se odpovědnosti:Funguje pouze v případě, že v názvech souborů nejsou žádné mezery.


paste -d " " file1.txt file2.txt

pro tuto práci funguje skvěle.

Ale v případě, že pracujete s textovými soubory v prostředí Windows a používáte GNU paste, ujistěte se, že jste transformovali soubory do formátu Unix (CR) a nepoužívejte soubory s (CR-LF).

Zdá se, že GNU paste nezpracovává správně formáty DOS a analýza je nepředvídatelná. Očekávaný výstup je nestálý a neočekávaný bez varování.

K jejich snadné transformaci můžete použít gVim (menu UpravitNastavení souboruFormát souboru ).


Linux
  1. Jak spojit dva textové soubory v Linuxu

  2. Tisknout dva soubory ve dvou sloupcích?

  3. Sloučit dva soubory řádek po řádku s oddělovacím symbolem trojité trubky „|||“?

  1. Jak sloučit dvě statické knihovny do jedné?

  2. Ručně sloučit dva soubory pomocí diff

  3. Sloučit dva soubory HTML do hlavního souboru HTML

  1. Jak sloučit obrázky v příkazovém řádku?

  2. Jak spojit dva soubory CSV?

  3. Jak mohu porovnat dva soubory XML?