Datei1:
.tid.setnr := 1123
.tid.setnr := 3345
.tid.setnr := 5431
.tid.setnr := 89323
Datei2:
.tid.info := 12
.tid.info := 3
.tid.info := 44
.tid.info := 60
Ausgabedatei:
.tid.info := 12
.tid.setnr := 1123
.tid.info := 3
.tid.setnr := 3345
.tid.info := 44
.tid.setnr := 5431
.tid.info := 60
.tid.setnr := 89323
text-processing
awk
sed
paste
pmaipmui
quelle
quelle
Antworten:
Verwenden von
paste
:quelle
Eine weitere awk-Lösung:
quelle
Die
paste
Lösung ist die tragbarste und effizienteste. Ich erwähne diese Alternative nur, wenn Sie ihr Verhalten bevorzugen, wenn die beiden Dateien nicht die gleiche Anzahl von Zeilen haben:Mit GNU
sed
:Wenn
file1
weniger Zeilen als vorhanden sindfile2
, wird beifile1
Erschöpfungsed
nichts dafür ausgegeben (im Gegensatz zu leeren Zeilen fürpaste
).Wenn
file1
mehr Zeilen als vorhanden sindfile2
, werden diese zusätzlichen Zeilen verworfen (im Gegensatz zum Drucken leerer Zeilen fürfile2
mitpaste
).quelle
Mit
awk
(gawk
,nawk
,mawk
):NR==FNR {x[FNR]=$0;next}
:NR==FNR
wird nur abgeglichen, wenn die aktuelle Datensatznummer der aktuellen Dateidatensatznummer entspricht (daher wird sie nur während der Verarbeitung der ersten Datei abgeglichen): Speichert den aktuell verarbeiteten Datensatz im Arrayx
an einem Index, der der aktuellen Dateidatensatznummer entspricht, und überspringt den derzeitiger Rekord{print x[FNR]"\n"$0}
: Gibt den Inhalt des Arraysx
in einem Index aus, der der aktuellen Dateidatensatznummer entspricht, gefolgt von einer neuen Zeile und dem Inhalt des aktuellen Datensatzesquelle
file1
undfile2
im Befehl wechseln .mawk
auch versucht und es läuft auch darauf. Wie auch immer vernünftig zu sein Ich kann nicht sehen , warum es nicht funktionieren soll nur umgekehrt (dh nur von Dateien Schalten). Es ist nicht soawk
wichtig für die Eingabe, Linien sind Linien. Wenn etwas von seiner Version nicht unterstützt worden wäre, wäre es beim ersten Mal kaputt gegangen. Viel einfacher, einfach OP hat einen Fehler beim Wechseln der Eingabedateien in den Argumenten gemacht.Die einfachste Lösung ist unten angegeben.
oder
quelle
file1
dann eine Zeile vonfile2
und so weiter ...)