2013-06-13 2 views
12

मैंकैसे अन्य फ़ाइल

1 1 
2 3 
3 4 

के रूप में दो कॉलम के साथ एक फ़ाइल और के रूप में

6 
7 
9 

एक स्तंभ के साथ एक फ़ाइल के लिए एक फ़ाइल से एक स्तंभ जोड़ने के लिए मैं दूसरी जोड़ना चाहते हैं पहले में फ़ाइल करें। उत्पादन किया जाना चाहिए:

1 1 6 
2 3 7 
3 4 9 

उत्तर

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

'-d' पैरामीटर के बिना मूल 'पेस्ट' काम करना चाहिए, मुझे लगता है। – fedorqui

+2

@fedorqui 'पेस्ट' के साथ डिफ़ॉल्ट डिलीमीटर एक टैब है। –

+0

आहा मैं देखता हूं। इसके लिए +1! – fedorqui

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

नोट: एक ही लंबाई की फाइलों के साथ काम करेंगे। यदि फ़ाइल की लंबाई अलग है, तो sudo_O's समाधान के साथ जाएं।


बस की बिल्ली के लिए, यहाँ एक awk आदेश मुझे लगता है कि paste अनुकरण करना चाहिए। विशुद्ध रूप से मनोरंजन के लिए हालांकि, अगर मैं तुम थे मैं अभी भी sudo_O's समाधान के साथ जाना होगा (या नहीं हो सकता है!)

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 भी। अब आप 10k उपयोगकर्ता हैं! – fedorqui

+0

बहुत अच्छा जवाब। क्या आप समझेंगे कि यह कैसे काम करता है? मुझे नहीं लगता कि यह 'एक [एनआर]' क्यों है और फिर 'एक [एफएनआर] 'है। – abalter

1

एक शुद्ध समाधान हो सकता है:

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 

आउटपुट:

1 1 6 
2 3 7 
3 4 9 
संबंधित मुद्दे