লিনাক্সে সেড কমান্ড কীভাবে ব্যবহার করবেন

এটি পাগল লাগতে পারে তবে লিনাক্স সেড কমান্ডটি একটি ইন্টারফেস ছাড়াই একটি পাঠ্য সম্পাদক। আপনি ফাইল এবং স্ট্রিমের পাঠ্য হস্তান্তর করতে কমান্ড লাইন থেকে এটি ব্যবহার করতে পারেন। এর শক্তিকে কীভাবে ব্যবহার করবেন তা আমরা আপনাকে দেখাব।

সেড পাওয়ার

দ্য সেড কমান্ডটি কিছুটা দাবার মতো: বুনিয়াদি শিখতে এক ঘন্টা সময় লাগে এবং তাদের আয়ত্ত করতে আজীবন সময় লাগে (বা, অন্তত প্রচুর অনুশীলন)। আমরা আপনাকে প্রতিটি প্রধান বিভাগে খোলার গাম্বিটগুলির একটি নির্বাচন দেখাব সেড কার্যকারিতা।

সেড পাইপড ইনপুট বা পাঠ্যের ফাইলগুলিতে কাজ করে এমন একটি স্ট্রিম সম্পাদক। তবে এটির একটি ইন্টারেক্টিভ পাঠ্য সম্পাদক ইন্টারফেস নেই। বরং আপনি পাঠ্যের মাধ্যমে যেমন কাজ করে তা অনুসরণ করার জন্য নির্দেশাবলী সরবরাহ করেন। এটি সমস্ত বাশ এবং অন্যান্য কমান্ড-লাইন শেলগুলিতে কাজ করে।

সঙ্গে সেড আপনি নিম্নলিখিত সমস্ত কিছু করতে পারেন:

  • পাঠ্য নির্বাচন করুন
  • বিকল্প পাঠ্য
  • পাঠ্যে লাইন যুক্ত করুন
  • পাঠ্য থেকে লাইন মুছুন
  • একটি আসল ফাইল পরিবর্তন করুন (বা সংরক্ষণ করুন)

আমরা ধারণাগুলি প্রবর্তন ও প্রদর্শনের জন্য আমাদের উদাহরণগুলি কাঠামোবদ্ধ করেছি, সবচেয়ে ক্ষুদ্রতর উত্পাদন করতে (এবং কমপক্ষে পৌঁছনীয়) সেড কমান্ড। তবে এর প্যাটার্ন মেলানো এবং পাঠ্য নির্বাচনের কার্যকারিতা সেড নিয়মিত এক্সপ্রেশন (regexes) উপর প্রচুর নির্ভর করুন। এর সর্বোত্তম ব্যবহারের জন্য আপনাকে এগুলির সাথে কিছুটা পরিচয় প্রয়োজন সেড.

সম্পর্কিত:কীভাবে লিনাক্সে নিয়মিত এক্সপ্রেশন (পুনরায়) ব্যবহার করবেন

একটি সহজ উদাহরণ

প্রথমত, আমরা ব্যবহার করতে যাচ্ছি প্রতিধ্বনি কিছু পাঠাতে পাঠাতে সেড একটি পাইপ মাধ্যমে, এবং আছে সেড পাঠ্যের একটি অংশ প্রতিস্থাপন করুন। এটি করতে, আমরা নিম্নলিখিত টাইপ করুন:

প্রতিধ্বনি হাওটোগনক | সেড 'গুলি / গনক / গীত /'

দ্য প্রতিধ্বনি কমান্ড "হাওটোগোনক" কে প্রেরণ করে সেড, এবং আমাদের সহজ প্রতিস্থাপনের নিয়ম ("বিকল্পগুলি" এর অর্থ দাঁড়ায়) প্রয়োগ করা হয়েছে।সেড প্রথম স্ট্রিংয়ের উপস্থিতির জন্য ইনপুট পাঠ্য অনুসন্ধান করে এবং দ্বিতীয়টির সাথে কোনও মিলকে প্রতিস্থাপন করবে।

স্ট্রিং "গনক" "গিক" দ্বারা প্রতিস্থাপিত হয় এবং নতুন স্ট্রিংটি টার্মিনাল উইন্ডোতে মুদ্রিত হয়।

বিকল্পগুলি সম্ভবত এর সর্বাধিক সাধারণ ব্যবহার সেড। আমরা প্রতিস্থাপনের আরও গভীর দিকে ডুব দেওয়ার আগে, যদিও পাঠ্যটি নির্বাচন করতে এবং মেলাতে হয় তা আমাদের জানতে হবে।

পাঠ্য নির্বাচন করা হচ্ছে

আমাদের উদাহরণগুলির জন্য আমাদের একটি পাঠ্য ফাইলের প্রয়োজন হবে। আমরা একটি ব্যবহার করব যা শমূয়েল টেলর কোলেরিজের মহাকাব্য "প্রাচীন মেরিনার দ্য রাইম" এর আয়াতগুলির একটি নির্বাচন রয়েছে।

এটির সাথে এক নজরে নিতে আমরা নিম্নলিখিতটি টাইপ করি কম:

কম coleridge.txt

ফাইলটি থেকে কয়েকটি লাইন নির্বাচন করতে, আমরা যে পরিসীমাটি নির্বাচন করতে চাই তার প্রারম্ভের এবং শেষের লাইনগুলি সরবরাহ করি। একটি একক সংখ্যা একটি লাইন নির্বাচন করে।

এক থেকে চারটি লাইন বের করতে, আমরা এই আদেশটি টাইপ করি:

sed -n '1,4p' coleridge.txt

মধ্যে কমা নোট করুন 1 এবং 4। দ্য পি অর্থ "মিলিত লাইনগুলি মুদ্রণ করুন"। গতানুগতিক,সেড সমস্ত লাইন মুদ্রণ। আমরা ফাইলের সমস্ত পাঠ্য দুটি বার মুদ্রিত মেলা লাইনগুলির সাথে দেখতে পাব। এটি প্রতিরোধ করতে, আমরা এটি ব্যবহার করব -এন (নিঃশব্দ) অপ্রত্যাশিত পাঠ্যটি দমন করতে।

আমরা রেখার নম্বরগুলি পরিবর্তন করেছি যাতে আমরা নীচে দেখানো মত একটি আলাদা শ্লোক নির্বাচন করতে পারি:

sed -n '6,9p' coleridge.txt

আমরা ব্যবহার করতে পারেন -ই (এক্সপ্রেশন) একাধিক নির্বাচন করার বিকল্প। দুটি এক্সপ্রেশন দিয়ে আমরা দুটি পদ নির্বাচন করতে পারি, এর মতো:

sed -n -e '1,4p' -e '31, 34p 'coleridge.txt

যদি আমরা দ্বিতীয় প্রকাশের মধ্যে প্রথম সংখ্যা হ্রাস করি তবে আমরা দুটি পদের মধ্যে একটি ফাঁকা সন্নিবেশ করতে পারি। আমরা নিম্নলিখিত টাইপ:

sed -n -e '1,4p' -e '30, 34p 'coleridge.txt

আমরা একটি প্রারম্ভিক লাইনটি চয়ন করতে এবং বলতে পারি সেড ফাইলের মধ্য দিয়ে যেতে এবং প্রতি পঞ্চম লাইনে বিকল্প লাইনগুলি মুদ্রণ করতে বা কোনও সংখ্যক লাইন এড়িয়ে যেতে। কমান্ডটি একটি রেঞ্জ নির্বাচন করার জন্য আমরা উপরের ব্যবহারের মতোই। এবার, তবে আমরা একটি টিল্ড ব্যবহার করব (~) সংখ্যাগুলি পৃথক করার জন্য কমাের পরিবর্তে।

প্রথম সংখ্যাটি সূচনা রেখাটি নির্দেশ করে। দ্বিতীয় সংখ্যাটি বলে সেড প্রারম্ভিক লাইনের পরে কোন লাইনগুলি আমরা দেখতে চাই। নম্বর 2 এর অর্থ প্রতি দ্বিতীয় লাইন, 3 এর অর্থ প্রতি তৃতীয় রেখা এবং আরও অনেক কিছু।

আমরা নিম্নলিখিত টাইপ:

sed -n '1 ~ 2p' coleridge.txt

আপনি যে পাঠ্যের সন্ধান করছেন তা ফাইলটিতে কোথায় রয়েছে তা আপনি সর্বদা জানবেন না, যার অর্থ লাইন সংখ্যাগুলি সবসময় খুব বেশি সহায়ক হবে না। তবে, আপনি ব্যবহার করতে পারেন সেড পাঠ্য নিদর্শনগুলির সাথে মিলিত লাইনগুলি নির্বাচন করতে। উদাহরণস্বরূপ, আসুন যে সমস্ত লাইন "এবং" দিয়ে শুরু হয় সেগুলি বের করে নেওয়া যাক।

ক্যারেট (^) লাইনের সূচনা উপস্থাপন করে। আমরা আমাদের সন্ধানের শব্দটি আগাম স্ল্যাশে আবদ্ধ করব (/)। আমরা "এবং" এর পরে একটি স্থানও অন্তর্ভুক্ত করি সুতরাং ফলস্বরূপ "অ্যান্ড্রয়েড" এর মতো শব্দগুলি অন্তর্ভুক্ত হবে না।

পড়া সেড স্ক্রিপ্টগুলি প্রথমে কিছুটা শক্ত হতে পারে। দ্য / পি এর অর্থ "মুদ্রণ", ঠিক যেমনটি আমরা উপরে বর্ণিত কমান্ডগুলিতে করেছিলাম। নিম্নলিখিত কমান্ডে, যদিও, একটি ফরোয়ার্ড স্ল্যাশ এর আগে:

sed -n '/ ^ এবং / p' coleridge.txt

"এবং" দিয়ে শুরু হওয়া তিনটি লাইন ফাইল থেকে বের করা হয় এবং আমাদের জন্য প্রদর্শিত হয়।

সাবস্টিটিশন তৈরি করা

আমাদের প্রথম উদাহরণে, আমরা আপনাকে a এর জন্য নিম্নলিখিত মূল বিন্যাসটি দেখিয়েছি সেড প্রতিস্থাপন:

প্রতিধ্বনি হাওটোগনক | সেড 'গুলি / গনক / গীত /'

দ্য s বলে সেড এটি একটি প্রতিস্থাপন। প্রথম স্ট্রিংটি অনুসন্ধানের প্যাটার্ন এবং দ্বিতীয়টি হ'ল পাঠ্যটি যার সাহায্যে আমরা সেই মেলানো পাঠ্যটি প্রতিস্থাপন করতে চাই। অবশ্যই সব কিছু লিনাক্সের মতো শয়তানও বিশদে রয়েছে।

"দিবস" এর সমস্ত উপস্থিতি "সপ্তাহ" থেকে "সপ্তাহ" এ পরিবর্তনের জন্য আমরা নিম্নোক্তটি টাইপ করি এবং মেরিনার এবং আলবাট্রসকে বন্ধনের জন্য আরও সময় দিতে:

সেড-এন 's / দিন / সপ্তাহ / পি' coleridge.txt

প্রথম লাইনে, কেবলমাত্র "দিন" এর দ্বিতীয় ঘটনাটি পরিবর্তিত হবে। এই কারণ সেড প্রতি লাইনে প্রথম ম্যাচের পরে থামে। নীচে প্রদর্শিত হিসাবে এক্সপ্রেশনের শেষে আমাদের একটি "জি" যুক্ত করতে হবে, একটি বিশ্বব্যাপী অনুসন্ধান করতে যাতে প্রতিটি লাইনের সমস্ত ম্যাচ প্রক্রিয়াজাত হয়:

সেড-এন 's / দিন / সপ্তাহ / জিপি' coleridge.txt

এটি প্রথম লাইনে চারটির মধ্যে তিনটির সাথে মিলছে। কারণ প্রথম শব্দটি হল "দিন" এবং ” সেড কেস-সংবেদনশীল, এটি উদাহরণটিকে "দিন" হিসাবে একই হিসাবে বিবেচনা করে না।

আমরা নিম্নলিখিতটি টাইপ করি, একটি যুক্ত করে i কেস-সংবেদনশীলতা নির্দেশ করতে এক্সপ্রেশনটির শেষে কমান্ডটিতে:

সেড-এন 's / দিন / সপ্তাহ / জিপ' coleridge.txt

এটি কাজ করে, তবে আপনি সবসময় ক্ষেত্রে-সংবেদনশীলতা চালু রাখতে চান না। এই দৃষ্টান্তগুলিতে, আপনি প্যাটার্ন-নির্দিষ্ট কেস-সংবেদনশীলতা যুক্ত করতে একটি রেগেক্স গ্রুপ ব্যবহার করতে পারেন।

উদাহরণস্বরূপ, যদি আমরা স্কোয়ার বন্ধনীগুলিতে অক্ষরগুলি আবদ্ধ করি ([]), তাদের ব্যাখ্যা করা হয়েছে "অক্ষরের তালিকা থেকে কোনও অক্ষর"।

আমরা "টাইপ" এবং "দিন" উভয়ের সাথে মেলে তা নিশ্চিত করার জন্য, আমরা নিম্নলিখিতটি টাইপ করি এবং গোষ্ঠীতে "ডি" এবং "ডি" অন্তর্ভুক্ত করি:

sed -n 's / [Dd] ay / সপ্তাহ / জিপি' coleridge.txt

আমরা ফাইলের বিভাগগুলিতে বিকল্পগুলিও সীমাবদ্ধ করতে পারি। ধরা যাক আমাদের ফাইলে প্রথম আয়াতে অদ্ভুত ব্যবধান রয়েছে। প্রথম আয়াতটি দেখতে আমরা নিম্নলিখিত পরিচিত আদেশটি ব্যবহার করতে পারি:

sed -n '1,4p' coleridge.txt

আমরা দুটি স্পেস অনুসন্ধান করব এবং সেগুলি একটি করে রেখে দেব। আমরা বিশ্বব্যাপী এটি করব যাতে ক্রিয়াটি পুরো লাইন জুড়ে পুনরাবৃত্তি হয়। স্পষ্টতই, অনুসন্ধানের প্যাটার্নটি হ'ল স্থান, স্থান নক্ষত্র (*), এবং প্রতিস্থাপনের স্ট্রিংটি একটি একক স্থান। দ্য 1,4 ফাইলটির প্রথম চারটি লাইনে প্রতিস্থাপনকে সীমাবদ্ধ করে।

আমরা সেগুলি সমস্ত এক সাথে নিম্নলিখিত কমান্ডে রেখেছি:

sed -n '1,4 s / * / gp' coleridge.txt

এটি দুর্দান্ত কাজ করে! অনুসন্ধানের ধরণটি এখানে গুরুত্বপূর্ণ। তারকাচিহ্ন (*) পূর্ববর্তী অক্ষরের শূন্য বা আরও বেশি কিছু উপস্থাপন করে যা একটি স্থান। সুতরাং, অনুসন্ধান প্যাটার্নটি এক স্থান বা তারও বেশি স্ট্রিংগুলির সন্ধান করছে।

যদি আমরা একাধিক স্পেসের যে কোনও ক্রমের জন্য একটি একক স্থানকে স্থান করে নিই, তবে আমরা প্রতিটি শব্দের মধ্যে একটি একক স্থান রেখে নিয়মিত ব্যবধানে ফাইলটি ফিরিয়ে দেব। এটি কিছু ক্ষেত্রে একক স্থানের জন্য একটি একক স্থানের বিকল্পও নেবে, তবে এটি কোনওরকম বিরূপ প্রভাব ফেলবে না — আমরা এখনও আমাদের কাঙ্ক্ষিত ফলাফল পাব।

আমরা যদি নিম্নলিখিতটি টাইপ করি এবং অনুসন্ধানের প্যাটার্নটিকে একটি একক স্থানে হ্রাস করি তবে আপনি তত্ক্ষণাত্ দেখবেন যে কেন আমাদের দুটি স্পেস অন্তর্ভুক্ত করতে হবে:

sed -n '1,4 s / * / gp' coleridge.txt

তারকাচিহ্নটি পূর্ববর্তী চরিত্রের শূন্য বা আরও বেশিটির সাথে মেলে, এটি প্রতিটি অক্ষরকে "শূন্য স্থান" হিসাবে স্থান নয় বলে মনে করে এবং এর পরিবর্তে প্রয়োগ করে।

তবে, যদি আমরা অনুসন্ধানের প্যাটার্নে দুটি স্পেস অন্তর্ভুক্ত করি,সেড প্রতিস্থাপন প্রয়োগ করার আগে অবশ্যই কমপক্ষে একটি স্থানের অক্ষর খুঁজে বার করতে হবে। এটি নিশ্চিত করে যে অনস্পেস অক্ষরগুলি অচ্ছুত থাকবে।

আমরা নিম্নলিখিতটি টাইপ করি, এটি ব্যবহার করে -ই (এক্সপ্রেশন) আমরা আগে ব্যবহার করেছি, যা আমাদের একসাথে দুটি বা আরও বেশি বিকল্প তৈরি করতে দেয়:

সেড-এন-ই 'এস / মোশন / ফ্লুর / গিপ' -ই 'এস / সাগর / গিটার / গিপ' coleridge.txt

আমরা যদি সেমিকোলন ব্যবহার করি তবে আমরা একই ফলাফল অর্জন করতে পারি (;) এর মত দুটি এক্সপ্রেশন পৃথক করতে:

সেড-এন 'গুলি / গতি / বিড়ম্বনা / গিপ; গুলি / মহাসাগর / নর্দমা / জিপ' coleridge.txt

নিম্নলিখিত কমান্ডটিতে যখন আমরা "সপ্তাহ" এর জন্য "দিন" পরিবর্তন করি, তখন "ওয়েল-এ-ডে" এক্সপ্রেশনটিতে "দিন" উদাহরণটিও অদলবদল করা হয়েছিল:

sed -n 's / [Dd] ay / সপ্তাহ / জিপি' coleridge.txt

এটি প্রতিরোধ করতে, আমরা কেবলমাত্র অন্য প্যাটার্নের সাথে মেলে এমন লাইনে বিকল্পগুলি চেষ্টা করতে পারি। যদি আমরা শুরুতে অনুসন্ধানের প্যাটার্ন রাখতে কমান্ডটি পরিবর্তন করি তবে আমরা কেবল সেই প্যাটার্নের সাথে মেলে এমন লাইনে অপারেটিং বিবেচনা করব।

আমাদের মিলের প্যাটার্নটি "পরে" শব্দটি তৈরি করতে আমরা নিম্নলিখিতটি টাইপ করি:

সেড-এন '/ পরে / এস / [ডিডি] এআই / সপ্তাহ / জিপি' coleridge.txt

এটি আমাদের চাই প্রতিক্রিয়া দেয় gives

আরও জটিল সাবস্টিটিশন

আসুন কুলারিজকে একটি বিরতি দিন এবং ব্যবহার করুন সেড থেকে নাম আহরণ ইত্যাদি / পাসডাব্লুড ফাইল।

এটি করার জন্য আরও ছোট উপায় রয়েছে (তবে আরও পরে) তবে আমরা অন্য ধারণাটি প্রদর্শনের জন্য এখানে আরও দীর্ঘ পথ ব্যবহার করব। অনুসন্ধানের প্যাটার্নে প্রতিটি মিলিত আইটেমকে (subexpressions বলা হয়) নাম্বার করা যায় (সর্বোচ্চ নয় টি আইটেম অবধি)। তারপরে আপনি নিজের নম্বরগুলিতে ব্যবহার করতে পারেনসেড নির্দিষ্ট subexpressions রেফারেন্স কমান্ড।

আপনাকে প্রথম বন্ধনীতে সবেশন এক্সপ্রেশন বন্ধ করতে হবে [()] এই কাজ করার জন্য। প্রথম বন্ধনী অবশ্যই একটি পিছনে স্ল্যাশ দ্বারা অনুসরণ করা আবশ্যক (\) তাদের স্বাভাবিক চরিত্র হিসাবে বিবেচনা করা থেকে বিরত রাখতে।

এটি করতে, আপনি নিম্নলিখিত টাইপ করতে হবে:

সেড এর / \ ([[^:] * \))। * / \ 1 / '/ ইত্যাদি / পাসডাব্লু

আসুন এটি ভেঙে দিন:

  • সেড এর /: দ্য সেড কমান্ড এবং প্রতিস্থাপনের এক্সপ্রেশন শুরু।
  • \(: উদ্বোধনী প্রথম বন্ধনী [(] ব্যাকস্ল্যাশ দ্বারা পূর্বে subexpression,\).
  • [^:]*: অনুসন্ধান শব্দটির প্রথম সুপ্রপ্রেসে বর্গাকার বন্ধনীগুলিতে একটি গ্রুপ রয়েছে। ক্যারেট (^) এর অর্থ "না" যখন কোনও গ্রুপে ব্যবহৃত হয়। একটি গোষ্ঠীর অর্থ এমন কোনও অক্ষর যা কোলন নয় (:) একটি ম্যাচ হিসাবে গ্রহণ করা হবে।
  • \): সমাপনী প্রথম বন্ধনী [)পূর্ববর্তী ব্যাকস্ল্যাশ সহ (\).
  • .*: এই দ্বিতীয় অনুসন্ধান স্যুবপ্রেসনের অর্থ "কোনও চরিত্র এবং সেগুলির যে কোনও সংখ্যা” "
  • /\1: এক্সপ্রেশনটির বিকল্প অংশ থাকে 1 ব্যাকস্ল্যাশ এর আগে (\)। এটি প্রথম subexpression এর সাথে মেলে এমন পাঠ্যের প্রতিনিধিত্ব করে।
  • /': বন্ধ সমাপ্তি-স্ল্যাশ (/) এবং একক উদ্ধৃতি (') সমাপ্তি সেড আদেশ

এর সমস্ত অর্থ কী তা হ'ল আমরা এমন কোনও অক্ষরের স্ট্রিং সন্ধান করতে যাচ্ছি যেখানে কোনও কোলন নেই (:), যা পাঠ্যের সাথে ম্যাচ করার প্রথম উদাহরণ হবে। তারপরে, আমরা সেই লাইনে অন্য কোনও কিছুর সন্ধান করছি, যা পাঠ্যের সাথে মিলে যাওয়ার দ্বিতীয় উদাহরণ হবে। আমরা প্রথম লাইনটি প্রথম সফলতার সাথে মেলে এমন পাঠ্যটির সাথে প্রতিস্থাপন করতে যাচ্ছি।

প্রতিটি লাইন / ইত্যাদি / পাসডাব্লু ফাইলটি কোলন-সমাপ্ত ব্যবহারকারী নাম দিয়ে শুরু হয়। আমরা প্রথম কোলনের সাথে সমস্ত কিছু মেলে এবং তারপরে সেই লাইনের পুরো লাইনের পরিবর্তে। সুতরাং, আমরা ব্যবহারকারীর নামগুলি বিচ্ছিন্ন করেছি।

এরপরে, আমরা প্রথম সূত্রটি প্রথম বন্ধনীতে বন্ধ করব [()] সুতরাং আমরা এটির সাথে সংখ্যা হিসাবেও উল্লেখ করতে পারি। আমরাও প্রতিস্থাপন করব \1 সঙ্গে \2। আমাদের কমান্ড এখন প্রথম কোলনের সমস্ত কিছুর সাথে পুরো লাইনটি প্রতিস্থাপন করবে (:) লাইনের শেষে।

আমরা নিম্নলিখিত টাইপ:

সেডস / \ ([[^:] * \) \ (। * \) / \ 2 / '/ ইত্যাদি / পাসডাব্লুড

এই ছোট পরিবর্তনগুলি কমান্ডটির অর্থটি উল্টে দেয় এবং আমরা ব্যবহারকারীর নাম বাদ দিয়ে সবকিছু পাই।

এখন, আসুন এটি করার দ্রুত এবং সহজ উপায়টি একবার দেখে নেওয়া যাক।

আমাদের অনুসন্ধান শব্দটি প্রথম কোলন থেকে এসেছে (:) লাইনের শেষে। কারণ আমাদের প্রতিস্থাপনের অভিব্যক্তি খালি (//), আমরা কোনও কিছুর সাথে মিলে যাওয়া পাঠ্যটি প্রতিস্থাপন করব না।

সুতরাং, আমরা নিম্নলিখিতটি লিখি, প্রথম কোলন থেকে সমস্ত কিছু কেটে ফেলি (:) লাইনটির শেষে, কেবল ব্যবহারকারীর নাম রেখে:

sed 's /:.*// "/ etc / passwd

আসুন আমরা সেই উদাহরণটিতে নজর দেব যেখানে আমরা একই কমান্ডের প্রথম এবং দ্বিতীয় ম্যাচগুলিকে উল্লেখ করি।

আমরা কমা একটি ফাইল পেয়েছি (,) প্রথম এবং শেষ নাম পৃথক করা। আমরা তাদের "শেষ নাম, প্রথম নাম" হিসাবে তালিকাবদ্ধ করতে চাই। আমরা ব্যবহার করতে পারিবিড়ালফাইলের মধ্যে কী রয়েছে তা দেখতে নীচে দেখানো হয়েছে:

বিড়াল geeks.txt

অনেক ভালো লেগেছে সেড কমান্ডগুলি, এটির পরেরটি প্রথমে দুর্ভেদ্য দেখাবে:

সেড এর / ^ \ (। * \), \ (। * \) $ / \ 2, \ 1 / জি 'geeks.txt

এটি আমরা ব্যবহার করি এমন অন্যদের মতো একটি প্রতিস্থাপন আদেশ রয়েছে এবং অনুসন্ধানের প্যাটার্নটি বেশ সহজ। আমরা এটি নীচে ভেঙে দেব:

  • সেড এর /: সাধারণ প্রতিস্থাপন আদেশ।
  • ^: কারণ ক্যারেটটি কোনও গ্রুপে নেই ([]), এর অর্থ "লাইনের শুরু"।
  • \(.*\),: প্রথম subexpression যে কোনও অক্ষরের সংখ্যা। এটি বন্ধনীতে আবদ্ধ [()], যার প্রত্যেকটির আগে একটি ব্যাকস্ল্যাশ হয় (\) তাই আমরা এটির দ্বারা সংখ্যাটি উল্লেখ করতে পারি। আমাদের পুরো অনুসন্ধান প্যাটার্নটি এ পর্যন্ত লাইন শুরু থেকে প্রথম কমা পর্যন্ত অনুসন্ধান হিসাবে অনুবাদ করেছে (,) কোনও অক্ষরের যে কোনও সংখ্যার জন্য।
  • \(.*\): পরবর্তী subexpression (আবার) যে কোনও অক্ষরের সংখ্যা। এটি বন্ধনীতেও আবদ্ধ রয়েছে [()], উভয়ই ব্যাকস্ল্যাশ দ্বারা পূর্ববর্তী হয় (\) তাই আমরা সংখ্যায় মিলিয়ে পাঠ্যটি উল্লেখ করতে পারি।
  • $/: ডলার সাইন ($) লাইনের শেষটি উপস্থাপন করে এবং আমাদের অনুসন্ধানকে লাইনের শেষ অবধি চালিয়ে যাওয়ার অনুমতি দেবে। আমরা ডলার চিহ্নটি প্রবর্তন করার জন্য এটি ব্যবহার করেছি। তারকাচিহ্ন হিসাবে আমাদের এখানে সত্যই প্রয়োজন হয় না (*) এই পরিস্থিতিতে লাইনের শেষ দিকে যাবে। ফরোয়ার্ড স্ল্যাশ (/) অনুসন্ধানের প্যাটার্ন বিভাগটি সম্পূর্ণ করে।
  • \ 2, \ 1 / জি ': যেহেতু আমরা প্রথম দুটি বন্ধনীগুলিতে বন্ধনগুলি আবদ্ধ করেছি, আমরা উভয়কে তাদের সংখ্যা দ্বারা উল্লেখ করতে পারি। যেহেতু আমরা ক্রমটি বিপরীত করতে চাই, আমরা সেগুলি টাইপ করি দ্বিতীয় ম্যাচ, প্রথম ম্যাচ। নম্বরগুলি একটি ব্যাকস্ল্যাশ দ্বারা পূর্বে করা উচিত (\).
  • / জি: এটি প্রতিটি লাইনে বিশ্বব্যাপী আমাদের কমান্ডকে সক্ষম করে।
  • geeks.txt: আমরা যে ফাইলটিতে কাজ করছি

আপনি কাট কমান্ডও ব্যবহার করতে পারেন () আপনার সন্ধানের প্যাটার্নের সাথে মেলে এমন সমস্ত লাইনের বিকল্প স্থাপন করতে। আমরা এতে "ঘাড়" শব্দটির সাহায্যে একটি লাইন অনুসন্ধান করতে নিম্নলিখিতটি টাইপ করি এবং এটি পাঠ্যের নতুন স্ট্রিংয়ের সাথে প্রতিস্থাপন করি:

সেড '/ ঘাড় / সি আমার কব্জির চারপাশে স্ট্রিং ছিল' coleridge.txt

আমাদের নতুন লাইনটি এখন আমাদের এক্সট্র্যাক্টের নীচে প্রদর্শিত হবে।

লাইন এবং পাঠ্য সন্নিবেশ করা হচ্ছে

আমরা আমাদের ফাইলে নতুন লাইন এবং পাঠ্য সন্নিবেশ করতে পারি। যে কোনও মিলের পরে নতুন লাইনগুলি সন্নিবেশ করানোর জন্য, আমরা অ্যাপেন্ড কমান্ডটি ব্যবহার করব ().

আমরা যে ফাইলটির সাথে কাজ করতে চলেছি তা এখানে:

বিড়াল geeks.txt

এটি অনুসরণ করা কিছুটা সহজ করার জন্য আমরা লাইনগুলি সংখ্যাযুক্ত করেছি।

আমরা "তিনি" শব্দটি যুক্ত রেখাগুলি অনুসন্ধান করতে এবং তাদের নীচে একটি নতুন লাইন সন্নিবেশ করতে আমরা নিম্নলিখিতটি লিখি:

সেড '/ তিনি / এ -> !োকানো হয়েছে!' geeks.txt

আমরা নিম্নলিখিত টাইপ করি এবং সন্নিবেশ কমান্ড অন্তর্ভুক্ত (i) এর সাথে নতুন লাইনটি সন্নিবেশ করতে পাঠ্য মেলানো পাঠ্য রয়েছে:

সেড '/ তিনি / আমি -> !োকানো হয়েছে!' geeks.txt

আমরা অ্যাম্পারস্যান্ড ব্যবহার করতে পারি (&), যা মিলের লাইনে নতুন পাঠ্য যুক্ত করতে মূল মিলিত পাঠ্যকে উপস্থাপন করে। \1 , \2, এবং এই জাতীয় মিলগুলি subexpressions উপস্থাপন করে।

একটি লাইনের শুরুতে পাঠ্য যুক্ত করতে, আমরা একটি প্রতিস্থাপন কমান্ড ব্যবহার করব যা লাইনটির সমস্ত কিছুর সাথে মেলে, প্রতিস্থাপনের ধারাটির সাথে মিলিয়ে আমাদের নতুন পাঠকে মূল লাইনের সাথে সংযুক্ত করে।

এই সমস্ত করতে, আমরা নিম্নলিখিত টাইপ করুন:

সেড / এস / / />> &োকানো হয়েছে এবং / 'geeks.txt

আমরা নিম্নলিখিত সহ, টাইপ করি জি কমান্ড, যা প্রতিটি লাইনের মধ্যে একটি ফাঁকা রেখা যোগ করবে:

sed 'G' geeks.txt

আপনি যদি দুটি বা ততোধিক ফাঁকা লাইন যুক্ত করতে চান তবে আপনি ব্যবহার করতে পারেন জি; জিজি; জি; জি, ইত্যাদি।

লাইনগুলি মুছে ফেলা হচ্ছে

মুছে ফেলুন আদেশ (d) অনুসন্ধান প্যাটার্নের সাথে মেলে এমন লাইনগুলি বা লাইন নম্বর বা রেঞ্জের সাথে নির্দিষ্ট করা মুছে ফেলা হয়।

উদাহরণস্বরূপ, তৃতীয় লাইনটি মুছতে, আমরা নিম্নলিখিত টাইপ করব:

sed '3d' geeks.txt

চার থেকে পাঁচ লাইনের পরিসীমা মুছতে, আমরা নিম্নলিখিত টাইপ করব:

সেড '4,5 ডি' geeks.txt

একটি সীমার বাইরে লাইনগুলি মুছতে, আমরা একটি বিস্ময়কর বিন্দু ব্যবহার করি (!), নিচে দেখানো হয়েছে:

সেড '6,7! ডি' geeks.txt

আপনার পরিবর্তনগুলি সংরক্ষণ করা হচ্ছে

এখনও অবধি, আমাদের সমস্ত ফলাফল টার্মিনাল উইন্ডোতে মুদ্রিত হয়েছে, তবে আমরা এখনও সেগুলি কোথাও সংরক্ষণ করতে পারি নি। এগুলিকে স্থায়ী করার জন্য, আপনি হয় মূল ফাইলগুলিতে আপনার পরিবর্তনগুলি লিখতে পারেন বা এগুলি একটি নতুনতে পুনর্নির্দেশ করতে পারেন।

আপনার আসল ফাইলটি ওভাররাইটিংয়ে কিছুটা সতর্কতা দরকার। যদি তোমার সেড কমান্ডটি ভুল, আপনি মূল ফাইলটিতে কিছু পরিবর্তন করতে পারেন যা পূর্বাবস্থায় ফেলা কঠিন difficult

কিছুটা মনের শান্তির জন্য, সেড আসল ফাইলটির কমান্ড কার্যকর করার আগে এটি একটি ব্যাকআপ তৈরি করতে পারে।

আপনি ইন-প্লেস বিকল্পটি ব্যবহার করতে পারেন (-আই) বলতেসেড আসল ফাইলে পরিবর্তনগুলি লিখতে, তবে আপনি যদি এতে কোনও ফাইল এক্সটেনশন যুক্ত করেন, সেড মূল ফাইলটিকে নতুন একটিতে ব্যাক আপ করবে। এটির মূল নামটি একই নামের সাথে থাকবে তবে নতুন ফাইল এক্সটেনশন সহ।

প্রদর্শনের জন্য, আমরা কোনও লাইন অনুসন্ধান করব যা "তিনি" শব্দটি ধারণ করে সেগুলি মুছে ফেলবে। বেক এক্সটেনশন ব্যবহার করে আমরা আমাদের মূল ফাইলটিকে নতুন করে ব্যাক আপ করব।

এই সমস্ত করতে, আমরা নিম্নলিখিত টাইপ করুন:

sed -i'.bak '' /^.*He.*$/d 'geeks.txt

আমাদের ব্যাকআপ ফাইলটি অপরিবর্তিত রয়েছে তা নিশ্চিত করতে আমরা নিম্নলিখিতটি টাইপ করি:

বিড়াল geeks.txt.bak

একটি নতুন ফাইলে আউটপুট পুনর্নির্দেশ করতে এবং অনুরূপ ফলাফল অর্জন করতে আমরা নিম্নলিখিতটি টাইপ করতে পারি:

sed -i'bb '' /^.*He.*$/d 'geeks.txt> new_geeks.txt

আমরা ব্যাবহার করি বিড়াল পরিবর্তনগুলি নতুন ফাইলে লেখা হয়েছিল তা নিশ্চিত করার জন্য, নীচে দেখানো হয়েছে:

বিড়াল new_geeks.txt

যে সমস্ত সেড

আপনি সম্ভবত লক্ষ্য করেছেন, এমনকি এই দ্রুত প্রাইমারটি চালু সেড বেশ দীর্ঘ। এই কমান্ডের অনেক কিছুই রয়েছে এবং আপনি এটি সহ আরও অনেক কিছু করতে পারেন।

আশা করি, যদিও এই প্রাথমিক ধারণাগুলি একটি দৃ foundation় ভিত্তি সরবরাহ করেছে যার ভিত্তিতে আপনি আরও শিখতে শুরু করার সাথে সাথে আপনি এটি তৈরি করতে পারেন।


$config[zx-auto] not found$config[zx-overlay] not found