বর্তমানে আমি স্ট্রিংয়ের প্রথম তিনটি ঘটনার একটি অংশ খুঁজে পেতে এবং প্রতিস্থাপন করতে AWK ব্যবহার করছি। স্ট্রিংটি এ জাতীয় বিন্যাস করা হয় এবং ফাইলে এই স্ট্রিংগুলির অনেকগুলি রয়েছে:
func(tempID="39849235",count='12');
এই লিঙ্কটি ব্যবহার করে , আমি স্ট্রিংয়ের প্রথম তিনটি দৃষ্টান্ত খুঁজে পেতে এবং প্রতিস্থাপন করতে AWK ব্যবহারের একটি পদ্ধতি খুঁজে পেতে সক্ষম হয়েছি। আমার যা করা দরকার তা আমি এটিকে পরিবর্তন করেছি এবং আমার স্ক্রিপ্টের একটি স্নিপেট নীচে রয়েছে:
id=12349876
awk 'BEGIN {matches=0}
matches < 3 && /.*tempID.*/ { sub(/tempID="[0-9]+"/,"tempID='"$id"'"); matches++ }
{ print $0 }' filName.py >filName.py.changed
উপরের কোডটির লক্ষ্য হ'ল টেম্পিডযুক্ত যে কোনও লাইনের সাথে মেলে এবং নামটিকে একটি ভেরিয়েবলের সাথে রাখা মানের সাথে টেম্পিডকে নির্ধারিত নম্বরটি প্রতিস্থাপন করা হয় $id
। অনুসন্ধান এবং প্রতিস্থাপনটি ভালভাবে কাজ করে, তবে একটি সমস্যা আমার কাছে মনে হচ্ছে এটি যেভাবেই এটি গঠন করি না কেন, আউটপুটটি উদ্ধৃতি ছাড়াই আইডি প্রিন্ট করে। আমি উদ্ধৃতিগুলি থেকে বাঁচতে এবং একক টিক্স দেওয়ার চেষ্টা করেছি, তবে নির্বিশেষে লাইনটি এতে পরিবর্তন করা হয়েছে:
func(tempID=39849235,count='12');
আমি প্রতিস্থাপন অংশের চারপাশে ডাবল উদ্ধৃতিগুলি সরিয়ে এবং এটিকে কাঠামোগত করার চেষ্টা করেছি tempID="$id"
, তবে দুর্ভাগ্যক্রমে এটি স্ট্রিং সহ আইডি নম্বরটি প্রতিস্থাপন করে $id
।
টেম্পিড মানটি সন্ধান এবং প্রতিস্থাপনের কোনও উপায় আছে এবং উদ্ধৃতি সহ মানটিকে ঘিরে রাখুন দয়া করে আমাকে জানান। আমি AWK এর সাথে আটকে নেই, সুতরাং সেডের মতো অন্য কোনও ইউটিলিটি সহ অন্য কোনও পদ্ধতিও ভাল কাজ করবে।