इसके लिए एक समर्पित उपकरण है paste
:। यह पहली फ़ाइल से प्रत्येक पूर्ण लाइन को दूसरी फ़ाइल से संबंधित लाइन के साथ मिलाता है; आप पहले या बाद में अवांछित कॉलम निकाल सकते हैं। उदाहरण के लिए, यह मानते हुए कि आपके कॉलम टैब-सीमांकित हैं:
paste file1.txt file2.txt | cut -f 1,2,3,6
यहां उन दोनों फाइलों को प्री-फिल्टर करने का एक तरीका है जो ksh / bash / zsh प्रोसेस प्रतिस्थापन पर निर्भर करती हैं।
paste <(<file1.txt sed 's/[[:space:]][[:space:]]*[^[:space:]]*$//') \
<(<file1.txt sed 's/^[^[:space:]]*[[:space:]][[:space:]]*//')
Awk को मुख्य रूप से एक समय में एक फ़ाइल संसाधित करने के लिए तैयार किया जाता है, लेकिन आप getline
समानांतर में किसी अन्य फ़ाइल से पढ़ने के लिए कॉल कर सकते हैं।
awk '
BEGIN {file2=ARGV[2]; ARGV[2]="";}
{$0 = $0 ORS getline(); print $1, $2, $3, $6;}
' file1.txt file2.txt
अब तक मैंने मान लिया है कि आप फ़ाइल 1 की पंक्ति 1 के साथ फ़ाइल 2 की पंक्ति 1, फ़ाइल 2 की पंक्ति 2 के साथ फ़ाइल 1 की पंक्ति 2 आदि से मेल खाना चाहते हैं। यदि आप किसी स्तंभ की सामग्री से मेल खाना चाहते हैं, तो यह एक है पूरी तरह से अलग मामला है। join
वह कार्य करेगा, बशर्ते कि आप जिस कॉलम से मिलान करना चाहते हैं, वह क्रमबद्ध हो।
pr -m -t -s\ File1.txt File2.txt | gawk '{print $1,$2,$3, $6}' > File3.txt