Das einfachste Werkzeug könnte hier sein sed
. So fügen Sie b.txt
in a.txt
nach der fünften Zeile, könnten Sie schreiben:
sed '5r b.txt' a.txt
sed
Liest die als argument ( a.txt
) angegebene Datei zeilenweise. Alle Zeilen werden in der Ausgabe so wiedergegeben, wie sie in der Eingabe erschienen sind, es sei denn, sie werden durch einen Befehl geändert.
Dies 5
ist eine Adresse (Zeilennummer), an der der folgende Befehl ausgeführt werden soll. Der Befehl, den wir verwenden, ist r
, der einen Dateinamen als Argument verwendet (hier b.txt
), ihn vollständig liest und in die Ausgabe nach der aktuellen Zeile einfügt.
Wie oben angegeben, sed
druckt diese Befehlszeile nur die Ausgabe auf das Terminal, ohne in Dateien zu schreiben. Sie können es entweder in eine neue Datei umleiten (keine der Eingabedateien!), Indem Sie die Ausgabeumleitung von Bash verwenden:
sed '5r b.txt' a.txt > c.txt
Oder Sie können die äußere Eingabedatei direkt ändern, a.txt
indem Sie sed
den -i
Schalter (für "In-Place") verwenden. Wenn Sie es als schreiben -i.bak
, wird zuerst eine Sicherungskopie der ursprünglichen Eingabedatei mit dem Suffix erstellt .bak
:
sed -i '5r b.txt' a.txt
Ein Beispiel:
$ cat a.txt
January
February
March
April
May
October
November
December
$ cat b.txt
June
July
August
September
$ sed '5r b.txt' a.txt
January
February
March
April
May
June
July
August
September
October
November
December