मुझे Google पर यह प्रश्न/उत्तर मिला और ऐसा लगता है कि यह किसी अन्य प्रश्न (How to merge two files using AWK?) में पाए गए एक बहुत ही विशिष्ट डेटा सेट का जिक्र कर रहा है। मैं जो जवाब ढूंढ रहा था वह है (और मुझे लगता है कि ज्यादातर लोग होंगे), यानी, एडब्ल्यूके का उपयोग करके दो अलग-अलग फाइलों से प्रत्येक पंक्ति को जोड़ना। हालांकि आप शायद कुछ यूनिक्स उपयोगिताओं तरह या पेस्ट में शामिल होने के इस्तेमाल कर सकते हैं, AWK स्पष्ट रूप से और अधिक लचीला और शक्तिशाली है कि आपका इच्छित उत्पादन अलग है, अगर बयानों का उपयोग कर, या फेरबदल ओएफएस (अधिक हो सकता है जिसके द्वारा मुश्किल उपयोगिता के आधार पर करने के लिए, सरल पंक्ति-दर-पंक्ति संयोजन के लिए उदाहरण के लिए नीचे देखें), एक और अधिक अर्थपूर्ण तरीके से निर्गम (खोल scripters लिए एक महत्वपूर्ण विचार फेरबदल)
:
awk 'FNR==NR { a[FNR""] = $0; next } { print a[FNR""], $0 }' file1 file2
।
यह अंतर्निहित प्रकार रूपांतरण का उपयोग करके संख्यात्मक रूप से अनुक्रमित सरणी (एडब्ल्यूके में केवल सहयोगी सरणी) के कार्य को अनुकरण करता है। यह अपेक्षाकृत अभिव्यक्तिपूर्ण और समझने में आसान है।
test1 और निम्नलिखित लाइनों के साथ test2 कहा जाता है दो फ़ाइलों का उपयोग करना:
test1:
line one
line two
line three
test2:
line one line four
line two line five
line three line six
:
line four
line five
line six
मैं इस परिणाम मिलता है हो पर निर्भर करता है w आप आउटपुट में कॉलम के बीच मानों में शामिल होना चाहते हैं, तो आप उचित आउटपुट फ़ील्ड सेपरेटर चुन सकते हैं। इलिप्स के साथ एक उदाहरण यहां है (...) स्तंभों को अलग:
awk 'BEGIN { OFS="..."} FNR==NR { a[(FNR"")] = $0; next } { print a[(FNR"")], $0 }' test1 test2
इस परिणाम पैदावार:
line one...line four
line two...line five
line three...line six
मैं कम से कम उम्मीद है कि इस आप सभी AWK की शक्ति का लाभ लेने के लिए प्रेरित करती है!
केंट, उत्कृष्ट स्पष्टीकरण; आपका बहुत बहुत धन्यवाद। मुझे एहसास नहीं हुआ कि 'एफएनआर == एनआर' एक प्रकार का 'if' कथन बना रहा था। यह वही है जो मुझे आगे बढ़ने में सक्षम होने की आवश्यकता है। मदद करने के लिए समय लेने के लिए बहुत बहुत धन्यवाद! – jkovba