मान लें कि आप पंक्ति 4 को "भिन्न" पाठ से बदलना चाहते हैं। आप AWK का उपयोग इस तरह कर सकते हैं:
awk '{ if (NR == 4) print "different"; else print $0}' input_file.txt > output_file.txt
AWK इनपुट को "रिकॉर्ड" मानता है जिसे "फ़ील्ड" में विभाजित किया गया है। डिफ़ॉल्ट रूप से, एक पंक्ति एक रिकॉर्ड है। NR
देखे गए रिकॉर्ड की संख्या है। $0
वर्तमान पूर्ण रिकॉर्ड का प्रतिनिधित्व करता है (जबकि रिकॉर्ड $1
से पहला क्षेत्र है और इसी तरह; डिफ़ॉल्ट रूप से फ़ील्ड लाइन से शब्द हैं)।
इसलिए, यदि वर्तमान लाइन संख्या 4 है, तो स्ट्रिंग को "अलग" प्रिंट करें, लेकिन अन्यथा अपरिवर्तित लाइन को प्रिंट करें।
AWK में, प्रोग्राम कोड { }
प्रत्येक इनपुट रिकॉर्ड पर एक बार रन में संलग्न होता है ।
आपको शेल जैसी चीजों की व्याख्या करने की कोशिश से शेल को रखने के लिए एकल-उद्धरण में AWK कार्यक्रम को उद्धृत करने की आवश्यकता है $0
।
संपादित करें: नीचे दिए गए टिप्पणियों में @chepner से एक छोटा और अधिक सुंदर AWK कार्यक्रम:
awk 'NR==4 {$0="different"} { print }' input_file.txt
केवल रिकॉर्ड (यानी लाइन) नंबर 4 के लिए, पूरे रिकॉर्ड को "अलग" स्ट्रिंग के साथ बदलें। फिर हर इनपुट रिकॉर्ड के लिए, रिकॉर्ड प्रिंट करें।
स्पष्ट रूप से मेरे AWK कौशल जंग खाए हुए हैं! साभार, @chepner
संपादित करें: और @ डेनिस विलियमसन से भी छोटा संस्करण देखें:
awk 'NR==4 {$0="different"} 1' input_file.txt
टिप्पणियों में यह कैसे समझाया जाता है: 1
हमेशा सही का मूल्यांकन होता है, इसलिए संबंधित कोड ब्लॉक हमेशा चलता रहता है। लेकिन कोई संबद्ध कोड ब्लॉक नहीं है, जिसका अर्थ है कि AWK पूरी लाइन को प्रिंट करने की अपनी डिफ़ॉल्ट कार्रवाई करता है। AWK को इस तरह के कार्यक्रमों की अनुमति देने के लिए बनाया गया है।