2012-06-22 15 views
10

Ho due file in linux, il primo file ha 4 colonne e il secondo ha 2 colonne. Voglio unire questi file in un nuovo file che ha i primi 3 colonne da file 1 e la prima colonna dal file 2. Ho provato awk, ma i miei dati dal file 2 è stata posta sotto il file 1.Unisci due file in linux con colonna diversa

+4

Sarà davvero d'aiuto se fornisci un esempio dei tuoi file di input e una descrizione di ciò che hai provato fino ad ora. –

risposta

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

Usa 'awk '{print $ 1", "$ 2", "$ 3}" 'per valori separati da virgole – Dinei

2

Se i file hanno lo stesso numero di righe, si può fare qualcosa di simile:

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

per stampare colonne 1 e 3 da file 1 e la colonna 2 da file2.

4

Non sono sicuro che le colonne che si desidera da ciascun file, ma qualcosa di simile dovrebbe lavorare:

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

Le prime tre colonne sarebbero raccolti da file1, e il quarto saltati, quindi prendere la prima colonna della secondo file.

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