जीएनयू awk(आमतौर पर लिनक्स सिस्टम पर पाया जाता है), संस्करण 4.1.0 के बाद से, कमांड लाइन पर या उसके awkसाथ एक " स्रोत लाइब्रेरी" को शामिल करने में सक्षम है । GNU के साथ वितरित होने वाले स्रोत पुस्तकालयों में से एक को कहा जाता है :-i--includeawkinplace
$ cat file
hello
there
$ awk -i inplace '/hello/ { print "oh,", $0 }' file
$ cat file
oh, hello
जैसा कि आप देख सकते हैं, यह awkकोड के आउटपुट को इनपुट फ़ाइल से बदल देता है। यह कहते हुए लाइन thereनहीं रखी जाती है क्योंकि यह प्रोग्राम द्वारा आउटपुट नहीं किया गया है।
awkकिसी फ़ाइल में स्क्रिप्ट के साथ , आप इसका उपयोग करेंगे
awk -i inplace -f script.awk datafile
यदि awkचर INPLACE_SUFFIXस्ट्रिंग पर सेट है, तो लाइब्रेरी फ़ाइल नाम के साथ प्रत्यय के रूप में मूल फ़ाइल का बैकअप बनाएगी।
awk -i inplace -v INPLACE_SUFFIX=.bak -f script.awk datafile
यदि आपके पास कई इनपुट फाइलें हैं, तो प्रत्येक फाइल व्यक्तिगत रूप से इन-प्लेस हो सकती है। लेकिन आप inplace=0उस फ़ाइल से पहले कमांड लाइन का उपयोग करके किसी फ़ाइल (या फ़ाइलों का एक सेट) के लिए इन-प्लेस संपादन बंद कर सकते हैं :
awk -i inplace -f script.awk file1 file2 inplace=0 file3 inplace=1 file4
उपरोक्त आदेश में, file3इन-प्लेस संपादित नहीं किया जाएगा।
एक ही फ़ाइल के अधिक पोर्टेबल "इन-प्लेस एडिट" के लिए, उपयोग करें
tmpfile=$(mktemp)
cp file "$tmpfile" &&
awk '...some program here...' "$tmpfile" >file
rm "$tmpfile"
यह इनपुट फ़ाइल को एक अस्थायी स्थान पर कॉपी कर देगा, फिर awkमूल फ़ाइल नाम पर रीडायरेक्ट करते हुए अस्थायी फ़ाइल पर कोड लागू करेगा ।
इस क्रम में संचालन करना ( awkअस्थायी फ़ाइल पर चलना , मूल फ़ाइल पर नहीं) यह सुनिश्चित करता है कि मूल फ़ाइल का मेटा-डेटा (अनुमतियाँ और स्वामित्व) संशोधित नहीं है।