লাইনের সংখ্যার ভিত্তিতে স্ট্রিং প্রতিস্থাপন করা হচ্ছে


50

আমার একটি পরিস্থিতি রয়েছে যেখানে আমি অনেকগুলি ফাইলে একটি নির্দিষ্ট স্ট্রিং প্রতিস্থাপন করতে চাই

অন্য একটি স্ট্রিং বিবিবি দিয়ে একটি স্ট্রিং এএএ প্রতিস্থাপন করুন তবে এএএ থেকে শুরু হওয়া বা এএএতে শেষ হওয়া প্রচুর স্ট্রিং রয়েছে এবং আমি কেবল 34 লাইনে একটি প্রতিস্থাপন করতে এবং অন্যকে অক্ষত রাখতে চাই।

সব ফাইলটিতে এই স্ট্রিংটি 34 তম লাইনেই লাইন নম্বর দ্বারা নির্দিষ্ট করা সম্ভব?

উত্তর:


82

আপনি এসডিতে রেড নম্বর বা এনআর (রেকর্ডের সংখ্যা) নির্দিষ্ট করতে পারেন।

awk 'NR==34 { sub("AAA", "BBB") }'

অথবা যদি আপনি কমান্ড লাইনে একাধিক ফাইল নির্দিষ্ট করতে চান তবে FNR (ফাইল নম্বর রেকর্ড) ব্যবহার করুন।

awk 'FNR==34 { sub("AAA", "BBB") }'

অথবা

sed '34s/AAA/BBB/'

সিডের সাথে ইন-প্লেস রিপ্লেসমেন্ট করতে

sed -i '34s/AAA/BBB/' file_name

-3

ধরুন আপনি ফাইল_রেকার্ডে তৃতীয় লাইনটি প্রতিস্থাপন করতে চান:

sed -i "s/`head -3 file_record | tail -1 `/replaced/" file_record

মাথার আগে এবং -1 এর পরে পিছনে উদ্ধৃতি ব্যবহার করুন ... এটি এটি নিচ্ছে না
রমান

1
এটি ঠিক কাজ করে না। এটির জন্য কিছু ভারি দায়িত্ব পালানো দরকার। এবং যদি তৃতীয় লাইনটি অন্য কোথাও নকল হয়?
স্পারহক
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.