वास्तव में ऐसा करने के लिए क्या प्रश्न पूछता पिछले जवाब से थोड़ा अधिक जटिल है और कुछ इस तरह की आवश्यकता होगी:
sed 's/|/:/2' file1 | sort -t: >file1.tmp
sed 's/|/:/2' file2 | sort -t: >file2.tmp
join -t':' file1.tmp file2.tmp -a1 -e'|' -o'0,1.2,2.2' | tr ':' '|'
यूनिक्स में शामिल होने पर ही शामिल हो सकते हैं एक फ़ील्ड AFAIK ताकि आपको उन फ़ाइलों का उपयोग करना चाहिए जो "दो फ़ील्ड में दो फाइलों में शामिल हों," में एक अलग डिलीमीटर का उपयोग करें, इस मामले में पहले दो फ़ील्ड। मैं एक कोलन : का उपयोग करूंगा, हालांकि : किसी भी इनपुट में मौजूद है जिसमें आपको कुछ और उपयोग करने की आवश्यकता होगी, उदाहरण के लिए एक टैब वर्ण उत्पादन के उपयोग के लिए बेहतर विकल्प हो सकता है। मैं नए कंपाउंड फ़ील्ड, sort -t:
पर आउटपुट को दोबारा सॉर्ट करता हूं, उदाहरण के लिए इनपुट फाइलों में कोई फर्क नहीं पड़ता है लेकिन असली दुनिया डेटा के लिए होगा। sed 's/|/:/2'
फ़ाइल में प्रत्येक पंक्ति पर कोलन के साथ पाइप की दूसरी घटना को प्रतिस्थापित करता है।
file1.tmp
01|a:jack|d
02|b:ron|c
03|d:tom|e
file2.tmp
01|a:nemesis|f
02|b:brave|d
04|d:gorr|h
join
उत्पादन के लिए कुछ और उन्नत विकल्पों के साथ tr
द्वारा फ़िल्टर अब हम का उपयोग करें:
-t':'
अंतरिम बृहदान्त्र निर्दिष्ट डेलीमीटर
-a1
बाएं बाहरी शामिल
-e'|'
असफल जुड़ने के लिए प्रतिस्थापन स्ट्रिंग निर्दिष्ट करता है, मूल रूप से अंतिम आउटपुट डिलीमीटर एन -1 बार जहां एन पाइप सीमित फ़ील्ड की संख्या फ़ाइल 2.tmp में कोलन के दाईं ओर शामिल होती है। इस मामले में एन = 2 तो एक पाइप चरित्र।
-o'0,1.2,2.2'
निर्दिष्ट करता है उत्पादन प्रारूप:
0
में शामिल होने के क्षेत्र
1.2
क्षेत्र file1.tmp के 2, यानी पेट के के अधिकार सब कुछ
2.2
क्षेत्र file2.tmp
tr ':' '|'
के 2 अंत में हम अंतिम आउटपुट के लिए कोलों को पाइप में वापस अनुवाद करते हैं।
उत्पादन अब से मेल खाता सवाल नमूना उत्पादन बिल्कुल जो पिछले जवाब नहीं किया:
01|a|jack|d|nemesis|f
02|b|ron|c|brave|d
03|d|tom|e||
तुम सही हो, अपने उत्पादन अपने उत्पादन से मेल खाता है। मामला समाप्त। आप सभी को शुभकामनायें। – shellter
@shellter। काफी नहीं। आईडीएम के पद में संबोधित एक मैच के बिना रिकॉर्ड के अंत में एक लापता पाइप है। फिर भी, मैं लिनक्स बाहरी जुड़ने के समारोह को ढूंढने के कूल्हे पर अधिकतर लोगों को पाने की रणनीति बनाने के लिए इसे एक बना देता हूं। –