2012-06-22 38 views
10

Tôi có hai tệp trong linux, tệp đầu tiên có 4 cột và tệp thứ hai có 2 cột. Tôi muốn hợp nhất các tệp này thành tệp mới có 3 cột đầu tiên từ tệp 1 và cột đầu tiên từ tệp 2. Tôi đã cố gắng, nhưng dữ liệu của tôi từ tệp 2 đã được đặt trong tệp 1.Hợp nhất hai tệp trong linux với cột khác nhau

+4

Sẽ thực sự hữu ích nếu bạn cung cấp ví dụ về tệp nhập của bạn cũng như mô tả về những gì bạn đã thử cho đến thời điểm này. –

Trả lời

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

Sử dụng 'awk' {print $ 1 "," $ 2 "," $ 3} ''cho các giá trị được phân tách bằng dấu phẩy – Dinei

2

Nếu các tệp có cùng số hàng, bạn có thể làm như sau:

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

để in colums 1 và 3 từ tệp 1 và cột 2 từ tệp2.

4

Không chắc cột mà bạn muốn từ mỗi tập tin, nhưng một cái gì đó như thế này nên làm việc:

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

Ba cột đầu tiên sẽ được chọn từ file1, và thứ tư bỏ qua, sau đó chọn cột đầu tiên từ tệp thứ hai.

1
you can try this one without paste command: 
awk '{print $1}{print $2}{print $3}' file1 >> mergedfile 
awk '{print $2}' file2 >> mergedfile 
Các vấn đề liên quan