Eine allgemeine Linux-Lösung ist: -
E1=""; E2="" { while true do read -r <&3 && l1="$REPLY" || l1="" E1=e read -r <&4 && l2="$REPLY" || l2="" E2=e [ "$E1$E2" == ee ] && break echo "$l1$l2" done } 3<"$1" 4<"$2"
Ich habe dies als Skript für die Lesbarkeit formatiert, aber es kann als lange Befehlszeile eingegeben werden, indem die neuen Zeilen durch Semikolons ersetzt werden $1
und $2
durch und die Pfade zu den zusammenzufügenden Dateien ersetzt werden.
Das funktioniert wie folgt: -
E1
und E2
sind Dateiende-Flags; - Zwei Eingabeströme (3 und 4) werden über die beiden übergebenen Dateipfade geöffnet.
- Eine Linie wird von jeder Datei gelesen und gesetzt in Variablen
l1
und l2
verbunden sind; - Beachten Sie, dass die
read -r l1
führenden und nachgestellten Leerzeichen entfernt werden, daher der komplexere Code zum Setzen l1
(und l2
); - Die Schleife wird beendet, wenn beide Dateien EOF erreichen, obwohl es eine triviale Änderung ist, wenn beide Dateien EOF erreichen.
- Das
echo
geht zum Standard out oder >"$3"
könnte zur Zeile hinzugefügt werden, wodurch die Ausgabedatei der dritte Parameter wird. - Der
echo
Befehl kann erweitert werden, wenn Sie eine Trennzeichenfolge hinzufügen möchten, um den Text von jeder Datei zu trennen.
Das obige Skript sollte in WSL (Windows Subsystem for Linux) in Windows 10 oder CygWin in früheren Windows-Versionen funktionieren.
Es wäre möglich, es zu implementieren cmd
, aber ich möchte es nicht versuchen, obwohl es in der erweiterten cmd
Ersatz-Freeware TCC / LE unkompliziert wäre . Es sollte auch mit PowerShell möglich sein, aber ich habe nicht viel Erfahrung darin, da ich hauptsächlich Linux verwende.