GNU/Linux >> LINUX-Kenntnisse >  >> Linux

wie man zwei Dateien konsistent Zeile für Zeile zusammenführt

Dieser Perl-Einzeiler zeigt die notwendigen Umbenennungen an:

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

Wenn dies für Sie funktioniert, ersetzen Sie den print -Anweisung mit einer echten Umbenennung und Verwendung

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

um die eigentliche Umbenennung vorzunehmen.


Sie können paste verwenden um die Dateien nebeneinander zu formatieren:

$ 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

Beispiel:

$ 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

Natürlich möchten Sie einige Sicherheitsüberprüfungen ([ -f "${from}" ] , ...).

Haftungsausschluss:Funktioniert nur, wenn Ihre Dateinamen keine Leerzeichen enthalten.


paste -d " " file1.txt file2.txt

eignet sich hervorragend für diesen Job.

Falls Sie jedoch Textdateien in einer Windows-Umgebung verarbeiten und GNU-Paste verwenden, stellen Sie sicher, dass Sie die Dateien in das Unix-Format (CR) umwandeln und keine Dateien mit (CR-LF) verwenden.

GNU Paste scheint DOS-Formate nicht richtig zu handhaben und das Parsen ist unvorhersehbar. Die erwartete Ausgabe ist unberechenbar und unerwartet ohne Warnungen.

Sie können gVim verwenden, um sie einfach umzuwandeln (Menü BearbeitenDateieinstellungenDateiformat ).


Linux
  1. Zwei Dateien in zwei Spalten drucken?

  2. Zwei Dateien Zeile für Zeile mit dem dreifachen Trennzeichen „|||“ zusammenführen?

  3. So vergleichen Sie den Inhalt zweier Tarballs

  4. Führen Sie manuell zwei Dateien mit diff zusammen

  5. Führen Sie zwei HTML-Dateien in eine Master-HTML-Datei zusammen

So lesen Sie Dateien Zeile für Zeile in Bash

Wie man Textdateien unter Linux vergleicht und zusammenführt

Wie man Textdateien unter Linux vergleicht und zusammenführt (Teil 2)

So führen Sie eine Mustersuche in Dateien mit Grep durch

So zeigen Sie zwei Dateien nebeneinander in Linux an

So vergleichen Sie zwei Dateien im Linux-Terminal