খুঁজুন এবং পাইথন ব্যবহার একাধিক ফাইল মধ্যে Strings প্রতিস্থাপন
সুচিপত্র:
বেশিরভাগ ক্ষেত্রে পাঠ্য ফাইলগুলির সাথে কাজ করার সময় আপনাকে এক বা একাধিক ফাইলে পাঠ্যের স্ট্রিংগুলি সন্ধান এবং প্রতিস্থাপন করতে হবে।
সেড একটি এস ট্রাম এড ইটোর। এটি পাইপলাইনগুলির মতো ফাইল এবং ইনপুট স্ট্রিমগুলিতে বেসিক পাঠ্য ম্যানিপুলেশন সম্পাদন করতে পারে।
sed
আপনি শব্দ এবং লাইনগুলি সন্ধান, অনুসন্ধান এবং প্রতিস্থাপন, সন্নিবেশ এবং মুছতে পারেন। এটি মৌলিক এবং বর্ধিত নিয়মিত প্রকাশকে সমর্থন করে যা আপনাকে জটিল নিদর্শনগুলির সাথে মেলানোর অনুমতি দেয়।
, আমরা
sed
দিয়ে স্ট্রিংগুলি কীভাবে সন্ধান করতে এবং প্রতিস্থাপন করব সে সম্পর্কে কথা বলব। আমরা আপনাকে কীভাবে পুনরাবৃত্ত অনুসন্ধান করতে হবে এবং প্রতিস্থাপন করব তাও দেখাব।
sed
দিয়ে স্ট্রিং সন্ধান করুন এবং প্রতিস্থাপন করুন
sed
বেশ কয়েকটি সংস্করণ রয়েছে যার মধ্যে কিছু কার্যকরী পার্থক্য রয়েছে। ম্যাকোস বিএসডি সংস্করণ ব্যবহার করে এবং বেশিরভাগ লিনাক্স ডিস্ট্রিবিউশনগুলি জিএনইউ
sed
সাথে পূর্বনির্ধারিতভাবে ইনস্টল হয়। আমরা জিএনইউ সংস্করণ ব্যবহার করব।
sed
ব্যবহার করে পাঠ্য প্রতিস্থাপন এবং প্রতিস্থাপনের সাধারণ ফর্মটি নিম্নলিখিত ফর্মটি গ্রহণ করে:
sed -i 's/SEARCH_REGEX/REPLACEMENT/g' INPUTFILE
-
-i
- ডিফল্টরূপেsed
তার আউটপুটটিকে স্ট্যান্ডার্ড আউটপুটে লিখে দেয়। এই বিকল্পটিsed
জায়গায় ফাইলগুলি সম্পাদনা করতে বলে। যদি কোনও এক্সটেনশান সরবরাহ করা হয় (ex-i.bak) মূল ফাইলের একটি ব্যাকআপ তৈরি হবে।s
- বিকল্প কমান্ড, সম্ভবত সেডের মধ্যে সর্বাধিক ব্যবহৃত কমান্ড।/ / /
- ডেলিমিটার চরিত্র। এটি যে কোনও অক্ষর হতে পারে তবে সাধারণত স্ল্যাশ (/
) অক্ষর ব্যবহৃত হয়।SEARCH_REGEX
- সাধারণ স্ট্রিং বা অনুসন্ধানের জন্য একটি নিয়মিত অভিব্যক্তি। প্রতিস্থাপন - প্রতিস্থাপন স্ট্রিং।g
- বিশ্বব্যাপী প্রতিস্থাপন পতাকা। ডিফল্টরূপে,SEARCH_REGEX
ফাইল লাইনটি লাইন পড়ে এবং একটি লাইনে কেবলSEARCH_REGEX
এর প্রথম উপস্থিতি পরিবর্তন করে। প্রতিস্থাপন পতাকা প্রদান করা হলে, সমস্ত উপস্থিতি প্রতিস্থাপন করা হবে।INPUTFILE
- আপনি যে ফাইলটি কমান্ডটি চালাতে চান তার নাম।
আর্গুমেন্টের চারপাশে উদ্ধৃতিগুলি রাখা ভাল অভ্যাস যাতে শেল মেটা-অক্ষরগুলি প্রসারিত হয় না।
আসুন
sed
কমান্ডটি কয়েকটি সর্বাধিক ব্যবহৃত বিকল্প এবং পতাকাগুলির সাথে ফাইলগুলিতে সন্ধান এবং প্রতিস্থাপনের জন্য কীভাবে ব্যবহার করতে হয় তার উদাহরণগুলি দেখুন।
প্রদর্শনের উদ্দেশ্যে, আমরা নিম্নলিখিত ফাইলটি ব্যবহার করব:
file.txt যাও
123 Foo foo foo foo /bin/bash Ubuntu foobar 456
sed -i 's/foo/linux/' file.txt
123 Foo linux foo linux /bin/bash Ubuntu foobar 456
গ্লোবাল রিপ্লেসমেন্ট ফ্ল্যাগ
sed
অনুসন্ধানের প্যাটার্নের সমস্ত উপস্থিতি প্রতিস্থাপন করে:
sed -i 's/foo/linux/g' file.txt
123 Foo linux linux linux /bin/bash Ubuntu linuxbar 456
আপনি যেমন খেয়াল করে থাকতে পারেন, পূর্ববর্তী উদাহরণে
foobar
স্ট্রিংয়ের ভিতরে থাকা স্ট্রিং
foobar
প্রতিস্থাপন করা হয়। যদি এটি পছন্দসই আচরণ না হয়, সন্ধানের স্ট্রিংয়ের উভয় প্রান্তে শব্দ-সীমানা প্রকাশ (
\b
) ব্যবহার করুন। এটি আংশিক শব্দগুলির সাথে মেলে না তা নিশ্চিত করে।
sed -i 's/\bfoo\b/linux/g' file.txt
123 Foo linux linux linux /bin/bash Ubuntu foobar 456
প্যাটার্ন মিলের কেস সংবেদনশীল করার জন্য,
I
পতাকাটি ব্যবহার করুন। নীচের উদাহরণে আমরা
g
এবং
I
উভয় পতাকা ব্যবহার
I
:
sed -i 's/foo/linux/gI' file.txt
123 linux linux linux linux /bin/bash Ubuntu linuxbar 456
sed -i 's/\/bin\/bash/\/usr\/bin\/zsh/g' file.txt
আরও সহজ এবং আরও পঠনযোগ্য বিকল্পটি হ'ল আরেকটি ডিলিমিটার অক্ষর ব্যবহার করা। বেশিরভাগ লোক উল্লম্ব বার (
|
) বা কোলন (:) ব্যবহার করে তবে আপনি অন্য কোনও অক্ষর ব্যবহার করতে পারেন:
sed -i 's|/bin/bash|/usr/bin/zsh|g' file.txt
123 Foo foo foo foo /usr/bin/zsh Ubuntu foobar 456
আপনি নিয়মিত এক্সপ্রেশনও ব্যবহার করতে পারেন। উদাহরণস্বরূপ সমস্ত 3 ডিজিটের সংখ্যা অনুসন্ধান করা এবং আপনি যে স্ট্রিং
number
ব্যবহার করবেন সেগুলি দিয়ে তাদের প্রতিস্থাপন করুন:
sed -i 's/\b\{3}\b/number/g' file.txt
number Foo foo foo foo /bin/bash demo foobar number
শেডের আরেকটি দরকারী বৈশিষ্ট্য হ'ল আপনি অ্যাম্পারস্যান্ড চরিত্রটি ব্যবহার করতে পারেন যা মিলিত প্যাটার্নের সাথে মিলে যায়। চরিত্রটি একাধিকবার ব্যবহার করা যেতে পারে।
উদাহরণস্বরূপ, আপনি যদি প্রতিটি 3 ডিজিটের সংখ্যার চারপাশে কোঁকড়ানো ধনুর্বন্ধনী add add যুক্ত করতে চান তবে টাইপ করুন:
sed -i 's/\b\{3}\b/{&}/g' file.txt
{123} Foo foo foo foo /bin/bash demo foobar {456}
সর্বশেষে তবে অন্তত নয়,
sed
সাহায্যে কোনও ফাইল সম্পাদনা করার সময় ব্যাকআপ তৈরি করা সর্বদা ভাল ধারণা। এটি করতে কেবল
-i
বিকল্পটিতে এক্সটেনশান সরবরাহ করুন। উদাহরণস্বরূপ,
file.txt
সম্পাদনা করতে এবং মূল ফাইলটি
file.txt.bak
হিসাবে সংরক্ষণ করতে আপনি ব্যবহার করবেন:
sed -i.bak 's/foo/linux/g' file.txt
ls
পুনরাবৃত্তি অনুসন্ধান এবং প্রতিস্থাপন
কখনও কখনও আপনি স্ট্রিংযুক্ত ফাইলগুলির জন্য পুনরাবৃত্তভাবে ডিরেক্টরিগুলি অনুসন্ধান করতে এবং সমস্ত ফাইলগুলিতে স্ট্রিং প্রতিস্থাপন করতে চান। ডিরেক্টরিতে পুনরাবৃত্তভাবে ফাইলগুলি সন্ধান করার জন্য ফাইন্ড বা
grep
জাতীয় কমান্ডগুলি ব্যবহার করে এবং ফাইলের নামগুলি
sed
পাইপ করে এটি করা যেতে পারে।
নিম্নলিখিত কমান্ডটি চলমান কার্যক্ষম ডিরেক্টরিতে পুনরাবৃত্তভাবে ফাইলগুলি অনুসন্ধান করবে এবং ফাইলের নামগুলি
sed
প্রেরণ করবে।
find. -type f -exec sed -i 's/foo/bar/g' {} +
ফাইলগুলির নামের সাথে ফাইলগুলির সমস্যাগুলি এড়ানোর জন্য
-print0
বিকল্পটি ব্যবহার করুন যা ফাইলটির নাম মুদ্রণ করতে বলে, তার পরে একটি নাল অক্ষর এবং
xargs -0
ব্যবহার করে আউটপুটটি পাইপ করে:
find. -type f -print0 | xargs -0 sed -i 's/foo/bar/g'
ডিরেক্টরি বাদ দিতে
-not -path
বিকল্পটি ব্যবহার করুন। উদাহরণস্বরূপ, আপনি যদি বিন্দু (
.
) দিয়ে শুরু হওয়া সমস্ত ফাইল বাদ দিতে আপনার স্থানীয় গিট রেপোতে একটি স্ট্রিং প্রতিস্থাপন করছেন তবে ব্যবহার করুন:
find. -type f -not -path '*/\.*' -print0 | xargs -0 sed -i 's/foo/bar/g'
find. -type f -name "*.md" -print0 | xargs -0 sed -i 's/foo/bar/g'
অন্য বিকল্পটি হ'ল
grep
কমান্ডটি অনুসন্ধান প্যাটার্নযুক্ত সমস্ত ফাইল পুনরাবৃত্তভাবে সন্ধান করার জন্য এবং তারপরে ফাইলের নামগুলি পাইপ করতে:
grep -rlZ 'foo'. | xargs -0 sed -i.bak 's/foo/bar/g'
উপসংহার
যদিও এটি জটিল এবং জটিল বলে মনে হচ্ছে, প্রথমে,
sed
দিয়ে ফাইলগুলিতে পাঠ্য সন্ধান এবং প্রতিস্থাপন করা খুব সহজ।
সেড কমান্ড, বিকল্প এবং পতাকাগুলি সম্পর্কে আরও জানতে GNU সেড ম্যানুয়াল এবং গ্রাইমায়ার সেড টিউটোরিয়ালটি দেখুন। আপনার যদি কোনও প্রশ্ন বা প্রতিক্রিয়া থাকে তবে নির্দ্বিধায় কোনও মন্তব্য করুন।
সেড টার্মিনালএমএস শব্দে শব্দের পরে পাঠ্য স্ট্রিং সন্নিবেশ করতে সন্ধান করুন এবং প্রতিস্থাপন ব্যবহার করুন

আপনি কি জানেন যে কোনও শব্দ পরে কোনও পাঠ্য স্ট্রিং stringোকাতে এবং দ্রুত এবং আরও ভাল অনুসন্ধান চালাতে আপনি মাইক্রোসফ্ট ওয়ার্ডে সন্ধান এবং প্রতিস্থাপন সরঞ্জামটি ব্যবহার করতে পারেন? দেখ কিভাবে.
লাইসেন্সক্রোলার ব্যবহার করে কী কীভাবে পণ্য কীগুলি সন্ধান এবং ব্যাকআপ করবেন

কীভাবে উইন্ডোজ সিরিয়াল নম্বরগুলি পুনরুদ্ধার করবেন, লাইসেন্সক্রোলার ব্যবহার করে পণ্য কীগুলি সন্ধান করুন।
গুগল ম্যাপ ব্যবহার করে কীভাবে দিকনির্দেশ এবং ভ্রমণ রুট সন্ধান করবেন

Google মানচিত্রের সাথে দিকনির্দেশ, ভ্রমণ রুট এবং কাস্টম মানচিত্র তৈরি করার জন্য একটি গাইড গাইড guide