GNU/Linux >> Belajar Linux >  >> Linux

cara menggabungkan dua file secara konsisten baris demi baris

One-liner Perl ini akan menampilkan penggantian nama yang diperlukan:

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

Jika ini berhasil untuk Anda, ganti print pernyataan dengan nama asli dan gunakan

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

untuk melakukan penggantian nama yang sebenarnya.


Anda dapat menggunakan paste untuk memformat file berdampingan:

$ 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

Misalnya:

$ 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

Tentu saja Anda ingin melakukan beberapa pemeriksaan keamanan ([ -f "${from}" ] , ...).

Penafian:Hanya berfungsi jika tidak ada spasi di nama file Anda.


paste -d " " file1.txt file2.txt

berfungsi dengan baik untuk pekerjaan ini.

Namun jika Anda menangani file teks di lingkungan Windows dan menggunakan pasta GNU, pastikan untuk mengubah file ke format Unix (CR) dan jangan gunakan file dengan (CR-LF).

Pasta GNU tampaknya tidak menangani format DOS dengan benar dan parsing tidak dapat diprediksi. Keluaran yang diharapkan tidak menentu dan tidak terduga tanpa peringatan.

Anda dapat menggunakan gVim untuk mengubahnya dengan mudah (menu EditPengaturan FileFormat Berkas ).


Linux
  1. Cara Menggabungkan Dua File Teks di Linux

  2. Cetak Dua File Dalam Dua Kolom?

  3. Gabungkan Dua File Baris demi Baris Dengan Simbol Pipa Tiga Pembatas “|||”?

  1. Bagaimana membandingkan dua konten tarball

  2. Bagaimana cara menggabungkan dua file menggunakan AWK?

  3. Menggabungkan dua file secara manual menggunakan diff

  1. Menggabungkan dua file HTML menjadi file master HTML

  2. Bagaimana cara menggabungkan gambar di baris perintah?

  3. Bagaimana cara menggabungkan dua file CSV?