2012-06-22 8 views
10

Mam dwa pliki w Linuksie, pierwszy plik ma 4 kolumny, a drugi ma 2 kolumny. Chcę połączyć te pliki do nowego pliku, który ma pierwsze 3 kolumny z pliku 1 i pierwszą kolumnę z pliku 2. starałem awk, ale moje dane z pliku 2 został umieszczony w pliku 1.Scal dwa pliki w Linuksie z inną kolumną

+4

To naprawdę pomoże, jeśli podasz przykład plików wejściowych, a także opis tego, co dotychczas wypróbowałeś. –

Odpowiedz

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

Użyj 'awk '{print $ 1", "$ 2", "$ 3}" 'dla wartości rozdzielonych przecinkami – Dinei

2

Jeśli pliki mają taką samą liczbę wierszy, można zrobić coś takiego:

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

drukowania colums 1 i 3 z pliku 1 i 2 kolumny z plik2.

4

Nie wiesz, które kolumny chcesz z każdego pliku, ale coś jak to powinno działać:

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

Pierwsze trzy kolumny będą zbierane od file1, a czwarty pomijany, a następnie wybrać pierwszą kolumnę z drugi plik.

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