2012-06-22 2 views
10

J'ai deux fichiers sous Linux, le premier fichier a 4 colonnes et le second a 2 colonnes. Je veux fusionner ces fichiers dans un nouveau fichier qui a les 3 premières colonnes à partir du fichier 1 et la première colonne du fichier 2. J'ai essayé awk, mais mes données à partir du fichier 2 a été placé sous fichier 1.Fusionner deux fichiers sous Linux avec une colonne différente

+4

Cela vous sera très utile si vous fournissez un exemple de vos fichiers d'entrée ainsi qu'une description de ce que vous avez essayé jusqu'à présent. –

Répondre

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

Utilisez 'awk '{print $ 1", "$ 2", "$ 3}" pour les valeurs séparées par des virgules – Dinei

2

Si les fichiers ont le même nombre de lignes, vous pouvez faire quelque chose comme:

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

pour imprimer 1 et 3 colums à partir du fichier 1 et la colonne 2 de fichier2.

4

Je ne sais pas les colonnes que vous voulez à partir de chaque fichier, mais quelque chose comme cela devrait fonctionner:

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

Les trois premières colonnes seraient cueillies de file1, et le quatrième sautées, puis choisissez la première colonne de la deuxième fichier.

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