eine Zeile aus einer Datei als Zeile in eine andere Datei einfügen

eine Zeile aus einer Datei als Zeile in eine andere Datei einfügen

Ich habe Datei1, deren Inhalt wie folgt aussieht:

Datei1

Die 6 Spalten werden von 6 verschiedenen Hosts abgerufen, bevor sie mit dem Befehl „-exec cp“ angezeigt werden. Dies dient nur zur Information.

Jetzt habe ich eine Liste mit 6 Hostnamen (Datei2), die ich als 1. Zeile zu Datei1 hinzufügen möchte.

Der Inhalt von Datei2 ist unten angegeben.

HOST1 
HOST2 
HOST3 
HOST4 
HOST5 
HOST6 

Ich brauche die endgültige Ausgabe so.

endgültige Ausgabe

Ich kann eine Spalte, aber keine Zeile hinzufügen.

Antwort1

Hier ist eine Möglichkeit:

awk -vhead="$(tr '\n' ' ' <file2)" 'BEGIN{print head}{print}' file1 > newfile

Der trBefehl ersetzt Zeilenumbrüche durch Leerzeichen und wandelt die „Spalte“ in eine „Zeile“ um. Dies wird als Variable file2übergeben , die vor allem anderen gedruckt wird. Dann wird einfach jede Zeile der Eingabedatei gedruckt.awkhead

Alternativ können Sie das Ganze auch in folgendem Format erledigen awk:

awk 'NR==FNR{printf "%s ",$0; next}FNR==1{print ""}1;' file2 file1 > newfile

NRist die aktuelle Eingabezeilennummer und FNRdie Zeilennummer der aktuellen Datei. Die beiden sind nur gleich, während die 1. Datei gelesen wird. Das printf "%s ",$0; nextdruckt die aktuelle Zeile ohne ein \nam Ende und springt zur nächsten. Das FNR==1{print ""}dient lediglich zum Hinzufügen eines \nnach dem Drucken der Kopfzeile und das 1;ist awkeine Abkürzung für „diese Zeile drucken“.

Antwort2

( echo $(cat file2) ; cat file1 ) | column -t > file3

verwandte Informationen