জিএনইউ awk
(সাধারণত লিনাক্স সিস্টেমে পাওয়া যায়) সংস্করণ ৪.১.০, কমান্ড লাইনের awk
সাথে -i
বা " উত্স গ্রন্থাগার" অন্তর্ভুক্ত করতে সক্ষম --include
। জিএনইউ দিয়ে বিতরণ করা উত্স গ্রন্থাগারগুলির awk
মধ্যে একটি হ'ল inplace
:
$ 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
আসল ফাইলে চলমান , মূল ফাইলে নয়) নিশ্চিত করে যে মূল ফাইলটির ফাইল মেটা-ডেটা (অনুমতি এবং মালিকানা) পরিবর্তন করা হয়নি।