2012-06-22 7 views
10

Ich habe zwei Dateien in Linux, die erste Datei hat 4 Spalten und die zweite hat 2 Spalten. Ich mag diese Dateien in eine neue Datei verschmelzen, die die ersten 3 Spalten aus der Datei hat 1 und die erste Spalte von Datei 2. Ich awk versucht, aber meine Daten aus der Datei 2 wurden unter Datei platziert 1.Merge zwei Dateien in Linux mit unterschiedlicher Spalte

+4

Es wird wirklich helfen, wenn Sie ein Beispiel für Ihre Eingabedateien sowie eine Beschreibung dessen, was Sie bisher versucht haben, bereitstellen. –

Antwort

29
paste file1 file2 | awk '{print $1,$2,$3,$5}' 
+0

Verwenden Sie "awk" {print $ 1 "," $ 2 "," $ 3} "für kommagetrennte Werte – Dinei

2

wenn die Dateien die gleiche Anzahl von Zeilen haben, können Sie so etwas wie:

awk '{ getline v < "file2"; split(v, a); print a[2], $1, $3 }' file1 

colums 1 und 3 aus der Datei 1 und Spalte 2 von file2 zu drucken.

4

Nicht sicher, welche Spalten aus jeder Datei wollen, aber so etwas wie dies funktionieren sollte:

paste <file1> <file2> | awk '{print $1,$2,$3,$5}' 

Die ersten drei Spalten von file1 abgeholt werden würde, und der vierte übersprungen, dann die erste Spalte in der Auswahl zweite Datei.

1
you can try this one without paste command: 
awk '{print $1}{print $2}{print $3}' file1 >> mergedfile 
awk '{print $2}' file2 >> mergedfile