2013-06-13 45 views

Trả lời

25
$ pr -mts' ' file1 file2 
1 1 6 
2 3 7 
3 4 9 

$ paste -d' ' file1 file2 
1 1 6 
2 3 7 
3 4 9 
+1

Cơ bản 'dán' mà không có tham số' -d' sẽ hoạt động, tôi đoán vậy. – fedorqui

+2

@fedorqui dấu phân cách mặc định với 'dán' là một tab. –

+0

Aaaah tôi hiểu. +1 cho điều này! – fedorqui

6
awk 'NR==FNR{a[NR]=$0;next}{print a[FNR],$0}' file1 file2 

Lưu ý: Sẽ làm việc với các tập tin của cùng chiều dài. Nếu độ dài tệp 'khác nhau, hãy đi với giải pháp sudo_O's.


Just for the heck của nó, đây là một lệnh awk mà tôi nghĩ nên mô phỏng paste. Đơn thuần cho vui mặc dù, nếu tôi là bạn tôi sẽ vẫn đi với giải pháp sudo_O's (hoặc có thể là không!)

awk 'NR==FNR{a[++y]=$0;next}{b[++x]=$0} 
END{z=x>y?x:y;while(++i<=z){print a[i],b[i]}}' file1 file2 
+0

+1 cho câu trả lời awk là tốt. Bây giờ bạn là 10k người dùng! – fedorqui

+0

Câu trả lời khá hay. Bạn có thể giải thích nó hoạt động như thế nào không? Tôi không hiểu tại sao nó là «a [NR]」 trước và sau đó là một [FNR] '. – abalter

1

Một giải pháp thuần túy có thể là:

exec 3<twofile 
while read x; do read -u 3 y; echo $x $y; done <onefile 

Infiles:

cat >onefile <<XXX 
1 1 
2 3 
3 4 
XXX 
cat >twofile <<XXX 
6 
7 
9 
XXX 

Đầu ra:

1 1 6 
2 3 7 
3 4 9 
Các vấn đề liên quan