বাশ সেডের উদাহরণ

Bash Sed Examples



ব্যাশ আপনাকে পরিবর্তনশীল সম্প্রসারণ ব্যবহার করে প্যাটার্ন প্রতিস্থাপন করতে দেয় ($ {var/pattern/রিপ্লেসমেন্ট})। এবং তাই, sed এই মত করে (sed -e ‘s/pattern/রিপ্লেসমেন্ট/’)। যাইহোক, টেক্সট ফাইলে প্যাটার্ন প্রতিস্থাপনের চেয়ে আরও বেশি কিছু আছে। এখানে আমরা সেডকে পুনরায় আবিষ্কার করব, উদাহরণস্বরূপ, সমান কমান্ড এবং ওয়ার্কফ্লো সহ প্রতিদিনের কাজে সহায়তা করার জন্য।

Sed উদাহরণের জন্য সেটআপ

উদাহরণের জন্য সেট আপ করার জন্য এখানে একটি দ্রুত নির্দেশিকা রয়েছে, যা আমি খুব বেশি ওভারকিল না করার চেষ্টা করব।







শব্দএটি একটি টেক্সট ফাইল যার মধ্যে 1 থেকে 100 পর্যন্ত সংখ্যা রয়েছে। যদি আপনি এটি তৈরি করতে কমান্ড সম্পর্কে অনিশ্চিত থাকেন, তাহলে ব্যাশ এক্সপোর্ট কমান্ডে xargs এর জন্য এক্সপোর্ট ফাংশন দেখুন। আপনি কখনই জানেন না যে এটি আপনার পরবর্তী শেল স্ক্রিপ্টিং ইন্টারভিউতে হতে পারে।



বারএকটি একক লাইন ধারণকারী একটি পাঠ্য ফাইল -।



পুরাতন-পিএইচপিএকটি টেক্সট ফাইল যা পুরাতন পিএইচপির লাইন ধারণ করে যা পিএইচপি 7 বা পরে ভেঙ্গে যাবে। (ইঙ্গিত: ereg)





লক্ষ্য করুন যে উপরে বর্ণিত সমস্ত ফাংশন সেটআপের জন্য ফাংশনগুলিতে এন্ডনোটের নীচে পাওয়া যাবে।

সমতুল্য কমান্ড সহ সেড উদাহরণ

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



1. একটি এলোমেলো লাইন মুদ্রণ করুন (সাজানোর সমতুল্য -R -| মাথা -1)

sed -এন '$ ((র্যান্ডম % 100)) পি '-

2. ফাইলের শেষ লাইনটি মুদ্রণ করুন (মাথা -1 -এর সমতুল্য)

sed -এন '$ p'-

3. একটি ফাইলে প্রথম 10 লাইন প্রিন্ট করুন (হেড -n 10 -এর সমতুল্য)

sed '10 কিউ'-

4. একটি ফাইলে প্রথম লাইন মুদ্রণ করুন (লেজ -1 -এর সমতুল্য)

sed -এন '1p'-

5. একটি অক্ষরের সমস্ত দৃষ্টান্ত মুছে দিন (tr -delete '0' এর সমতুল্য, যেখানে 0 হল সেই অক্ষর যা আমরা মুছে ফেলতে চাই)

sed -এবং 's / 0 // g'-

6. csv ফাইলকে tsv এ রূপান্তর করুন (tr ',' ' t' -) এর সমতুল্য

sed -এবং 's/,/ t/g'-

7. ফাইল যোগ করুন (বিড়াল বারের সমতুল্য)

sed '$ a ---'-

8. ফাইলে লাইন প্রিপেন্ড করুন (বিড়াল -বারের সমতুল্য)

sed '1i ---'-

9. ফাইলে সমস্ত লাইন মুদ্রণ করুন (বিড়ালের সমতুল্য)

sed -এন -এবং 'পি'-

10. একটি প্যাটার্নের সাথে মিলিত একটি লাইন মুদ্রণ করুন (grep -e ‘^1’ -এর সমতুল্য)

sed -এন -এবং '/^1/ পি'-

11. একটি প্যাটার্নের সাথে মিলে যাওয়া লাইন মুছে দিন (grep -v -e ‘^1’ -এর সমতুল্য)

sed -এবং '/^1/ ডি'-

12. একটি ফাইলে লাইনের সংখ্যা পান (wc -l -এর সমতুল্য)

sed -এন -এবং '$ ='-

13. ব্যাকগ্রাউন্ডে একটি ফাইলে লিখুন (সমতুল্য কমান্ড টি)

sed 'ভিতরে$ {1}'-

টি কমান্ড বাস্তবায়নের জন্য sed ব্যবহার করার উদাহরণ

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

কমান্ড

টি ()
{
পরীক্ষা $ {#} -ইক || প্রত্যাবর্তন;
sed 'ভিতরে$ {1}'-
}
প্রধান()
টিএই;
বিড়ালএই

প্রধান

আউটপুট


2
3
4
5
6
7
8
9
10

2
3
4
5
6
7
8
9
10

এখানে আপনি 1 থেকে 10 পর্যন্ত পূর্ণসংখ্যার দুটি তালিকা দেখতে পাবেন। প্রথমটি হল seq কমান্ড থেকে। দ্বিতীয়টি আমরা টি -তে লেখা ফাইলের বিড়াল থেকে পাই। আমি জানি এটা হাস্যকর কিন্তু এটি কাজ করে!

একটি ফাইলে এলোমেলো লাইন প্রিন্ট করার জন্য sed ব্যবহার করার উদাহরণ

ধরুন যে আমরা একটি ফাইলে একটি এলোমেলো লাইন প্রিন্ট করতে চাই ব্যাশ এবং সামান্য সেড ব্যবহার করে। আমরা এটা করতে পারি? হ্যাঁ আমরা পারি! এখানে কিভাবে।

একটি ফাংশন বাস্তবায়ন যে

  1. একটি ফাইলে লাইনের সংখ্যা পায়, এল
  2. 1 এবং L, R এর মধ্যে একটি এলোমেলো সংখ্যা তৈরি করে
  3. প্রিন্ট R

ফাংশন আশা করে যে ইনপুটটি বাইরে থেকে পাইপ করা হবে।

কমান্ড

কিছু লাইন()
{
ফাংশনlc()
{
sed -এন -এবং '$ ='-
};
ফাংশনমুদ্রণ লাইন()
{
sed -এন -এবং '$ {1}p '-
};
তাপমাত্রা= $( mktemp );
বিড়াল-> $ {temp};
বিড়াল $ {temp} |মুদ্রণ লাইন $((এলোমেলো%$( বিড়াল $ {temp} |lc)+ ));
আরএম $ {temp}
}

উদাহরণ ব্যবহারের (1)

seq 100 |_

আউটপুট (1)

35

উদাহরণ ব্যবহার (2)

কার্ল https://linuxhint.com/bash_cut_command/ -নিরব |স্ট্রিপ-ট্যাগ|কিছু লাইন

এইচটিএমএল ট্যাগগুলি খোলার জন্য sed ব্যবহার করে নীচের উদাহরণটি দেখুন। লক্ষ্য করুন যে অতিরিক্ত উদাহরণ কখনও কখনও ফাঁকা লাইনের জন্য ফাঁকা দেয়। একটি ব্যায়াম হিসাবে, এটি উন্নত করা যেতে পারে।

একটি ফাইলে লাইন মুদ্রণের জন্য sed ব্যবহার করা

ধরুন যে আপনি একটি ফাইলে একটি প্রদত্ত লাইন মুদ্রণ করার জন্য bash এ একটি ফাংশন বাস্তবায়ন করতে চান। বাশ, মাথা, লেজ, বা awk এ একটি লুপ ব্যবহার করে একটি ফাইলে একটি একক লাইন মুদ্রণ করার চেষ্টা করা একটি ফাইলে লাইন মুদ্রণের জন্য খুব বেশি কাজ। ভাল জিনিস আমরা sed আছে। Sed ব্যবহার করে ফলে ফাংশন নিম্নরূপ হবে।

কমান্ড

মুদ্রণ লাইন()
{
sed -এন '$ {1}p '-
}

এখন দেখা যাক যখন আমরা শব্দগুলিতে মুদ্রণ-লাইন ব্যবহার করি তখন কী হয়।

কমান্ড

শব্দ|মুদ্রণ লাইনপঞ্চাশ

আউটপুট

পঞ্চাশ

ঠিক আছে. ভালো লাগছে কিন্তু আসুন এমন কিছু চেষ্টা করি যা একটু কম তুচ্ছ মনে হয়।

কমান্ড

ঘোষণা করা -এক্সএফশব্দ
ঘোষণা করা -এক্সএফমুদ্রণ লাইন
seq 10$(শব্দ| wc -দ্য ) | xargs-আইবাশ -সি 'শব্দ | মুদ্রণ লাইন {} '

আউটপুট


এগারো
একুশ
31
41
৫১
61
71
81
91

ঠিক আছে. এখন এটা আরো ভালো লেগেছে! আপনি দেখেন কিভাবে একটি ব্যাশের স্ক্রিপ্টে sed ​​ব্যবহার করা যেতে পারে একটি ফাইলের যে কোন লাইন প্রিন্ট করতে।

সমতুল্য কমান্ড ছাড়া সেড উদাহরণ

একটি কমান্ড-লাইন পরিবেশে, কখনও কখনও একটি সমাধানের পথ যা সর্বনিম্ন প্রতিরোধের সৃষ্টি করে সেড উপায়; অন্যথায়, আপনি প্রথম স্থানে প্রয়োজনের চেয়ে বেশি কাজ শেষ করেন। কিছু কমান্ড নীচে বৈশিষ্ট্যযুক্ত হতে পারে।

শেল স্ক্রিপ্টে সমস্ত লাইন কমান্ড করুন

sed -এবং 's/^/#/'-
প্রথম লাইন মুছে দিন
sed -এবং '1 ডি'-
মুছে ফেলাশেষলাইন
sed -এবং '$ d'-
একটি প্যাটার্নের সাথে মিলিত রেখার আগে একটি লাইন োকান
sed '/0 $/আমি ---'-
একটি প্যাটার্নের সাথে মিলিত রেখার পরে একটি লাইন সন্নিবেশ করান
sed ' / 0 $ / ---'-
এইচটিএমএল ট্যাগ বের করুন
sed -এবং 's /†*.// g'-
Ereg আপগ্রেড করুনভিতরেপুরানো php কোড চালানোর জন্যভিতরেphp7 বা তার পরে
sed 's/ereg ( ([^,]*)। ([^)]*) ./ strpos ( 2, 1)/g'
চেক করুনযদি sedএকটি নির্দিষ্ট সংস্করণের চেয়ে আগের
sed -এবং 'v 4.5'-

ব্যাশে সেড ভার্সনের উদাহরণ

উদাহরণের উপরে, সেড একটি নির্দিষ্ট সংস্করণের চেয়ে আগে কিনা তা পরীক্ষা করার জন্য একটি লাইন আছে যা আমরা ব্যাশে সংস্করণ শাখা বাস্তবায়নের জন্য ব্যবহার করতে পারি, যা আমি বিশ্বাস করি sed -version আউটপুট থেকে সংস্করণ সংখ্যাগুলির তুলনা করার জন্য একটি ফাংশন বাস্তবায়নের চেষ্টা করার চেয়ে সহজ । কেবলমাত্র সমস্যাটি হ'ল যদি সেডের পূর্ববর্তী সংস্করণ থাকে যা v কমান্ড সমর্থন করে না, তবে আমরা সমস্যায় পড়েছি।

কমান্ড

test-sed-version-at-most() {
বের করে দিল -এন | sed 'ভি$ {1}'-2> /দেব/খালি
}
চেষ্টা সংস্করণ()
{
বের করে দিল -এন 'সংস্করণ$ {1}। ঠিক আছে. এটা কর ';
test-sed-version-at-most$ {1} && {
বের করে দিল -এন 'পুরানো';
সত্য
} || {
বের করে দিল -এন 'নতুন'
};
বের করে দিল 'উপায়।'
}
প্রধান()
{
স্থানীয়v;
জন্যvভিতরে 4{4,5};
কর
চেষ্টা সংস্করণ$ {v};
সম্পন্ন
}
প্রধান

আউটপুট

সংস্করণ4.4। ঠিক আছে. এটি পুরানো পদ্ধতিতে করুন।
সংস্করণ4.5। ঠিক আছে. এটা নতুন ভাবে করুন।

লক্ষ্য করুন যে এই মেশিনে টাইপ করার সময় আমার মেশিনে সেডের সংস্করণ 4.4, যা উপরের আউটপুটটি ব্যাখ্যা করবে। এছাড়াও, একই সময়ে, gnu sed এর সর্বশেষ সংস্করণটি ছিল 4.7, যা আমার থেকে প্রায় 3 বছর বড়। আমার সেড পুরাতন! আসলে, সেড 0.০. in -এ, ভার্সন কমান্ডে একটি প্যারামিটার যোগ করা হয়েছিল, তাই এই কৌশলটি যেকোনো কমপক্ষে v4.0.6 এর জন্য কাজ করে, যা ২০০ version সালের প্রথম দিকে সংস্করণটি প্রকাশ করা হয়েছিল তা বিবেচনা করে নমনীয়। আপনি ভালো।

আমি কিছু অতিরিক্ত খনন করেছি, প্রকৃতপক্ষে নিউজ সর্বশেষ সোর্স কোডের বাইরে পড়ছি। সংস্করণ 4.6 এর একটি নতুন বৈশিষ্ট্য রয়েছে, – ডিবাগ যা স্ক্রিপ্টটি ফেলে দেয় এবং আউটপুট লাইন টীকা দেয়। এটি আপনাকে ব্যাশে ফাংশন দ্বারা উৎপন্ন sed স্ক্রিপ্টগুলিকে ক্যানোনিকাল আকারে অনুবাদ করার অনুমতি দেবে। কুল! শুধু ভুলে যাবেন না যে আপনার ব্যাশে সেড সংস্করণ শাখা প্রয়োজন। এই সেড উদাহরণটি খেলার মধ্যে আসে।

এইচটিএমএল ট্যাগগুলি ছিনিয়ে নেওয়ার জন্য sed ব্যবহার করে ব্যাশ ফাংশনের উদাহরণ

উপরের উদাহরণগুলিতে এইচটিএমএল ট্যাগ বের করার একটি লাইন আছে। আসুন এটি একটি ব্যাশ ফাংশনে নিক্ষেপ করি এবং এটি আমার লেখা শেষ নিবন্ধ থেকে সমস্ত এইচটিএমএল ট্যাগগুলি বের করার জন্য ব্যবহার করি।

কমান্ড

স্ট্রিপ-ট্যাগ()
{
sed -এবং 's /†*.// g'-
}
কার্ল https://linuxhint.com/bash_cut_command/ -নিরব |স্ট্রিপ-ট্যাগ

আমি বলতে পারি না যে এটি নিখুঁত কিন্তু অন্তত এটি টার্মিনালে পাঠযোগ্য।

ওয়ার্কফ্লো সহ সেড উদাহরণ: ওয়ার্কফ্লোর উদাহরণ: ফাইন্ড, গ্রেপ এবং সেড ব্যবহার করে নিরাপদে সবগুলি প্রতিস্থাপন করুন

এটা বলা নিরাপদ যে -i বিকল্পের সাথে sed ​​ব্যবহার করে করা পরিবর্তনগুলি অপরিবর্তনীয়। যে পর্যন্ত আপনি পুরোপুরি নিশ্চিত নন যে কোন পাঠ্য প্রতিস্থাপন করা হবে, আপনি সম্ভবত একটি কম অক্ষর দিয়ে শেষ করতে পারেন। এই কারণেই এই উদাহরণে, আমরা আপনার নির্বাচিত সমস্ত ফাইলে টেক্সটকে নিরাপদে প্রতিস্থাপন করতে একটি ওয়ার্কফ্লোতে sed ​​ব্যবহার করব।

কর্মধারা

  1. অনুসন্ধান
  2. খপ্পর
  3. sed
অনুসন্ধান

এখানে আপনি প্রতিস্থাপন সাপেক্ষে ফাইল নির্বাচন করবেন। আমি এই লাইন বরাবর একটি কমান্ড ব্যবহার করার পরামর্শ দিচ্ছি:

অনুসন্ধান -প্রকার-নাম | খপ্পর -ভি-এবং| xargs-আমি ...

উদাহরণস্বরূপ, আপনি পিএইচপি ফাইলগুলিকে গিট রিপোজিটরি ডিরেক্টরি বাদ দিয়ে প্রতিস্থাপিত করতে পারেন।

অনুসন্ধান -প্রকার-নাম*.php| খপ্পর -ভি -এবং '.যাওয়া' | xargs -আই...

ব্যাশে xargs কমান্ড সম্পর্কে আরও পড়ুন।

খপ্পর

পরবর্তীতে, আমরা নিম্নরূপ নির্বাচিত ফাইলগুলির মধ্যে কিছু_প্যাটার চেষ্টা করে দেখতে যাচ্ছি। মনে রাখবেন যে যেহেতু আমরা grep এর জন্য -o বিকল্পটি ব্যবহার করছি, আউটপুট শুধুমাত্র মিলিত স্ট্রিং দেখাবে যদি থাকে।

অনুসন্ধান -প্রকার-নাম*.php| খপ্পর -ভি -এবং '.যাওয়া' |
xargs -আই খপ্পর -এবংকিছু_ প্যাটার্ন-অথবা

উপরের কমান্ডটি some_pattern এর সাথে মিলে যাওয়া স্ট্রিংয়ের একটি তালিকা ফেরত দেওয়া উচিত।

sed

অবশেষে, আমরা some_pattern এর সাথে মিলে যাওয়া সব স্ট্রিং প্রতিস্থাপন করতে চাই। এটি করার জন্য আমাদের নিম্নরূপ grep কে sed ​​এ রূপান্তর করতে হবে।

অনুসন্ধান -প্রকার-নাম*.php| খপ্পর -ভি -এবং '.যাওয়া' |
xargs -আই sed -আই -এবংগুলি/কিছু_ প্যাটার্ন/প্রতিস্থাপন/

Grep কমান্ড sed -i হয়ে যায় এবং -o বিকল্পটি সরানো হয়। এবং সেখানে আপনি এটা আছে।

এখন আপনি আপনার ভাগ্য পরীক্ষা করার পরিবর্তে sed ​​এ কোন স্ট্রিংগুলি প্রতিস্থাপিত হতে চলেছে তা পরীক্ষা করতে পারেন।

উদাহরণে ব্যবহৃত বিকল্পের এন্ডনোট

এখানে সংক্ষেপে আলোচিত সেড উদাহরণগুলিতে ব্যবহৃত বিকল্পগুলির একটি তালিকা রয়েছে।

বিকল্প বর্ণনা
-আই জায়গায় সম্পাদনা করুন। যদি ইনপুট একটি ফাইল হয় (পাইপ করা হয় না) এক্সপ্রেশনের ফলাফল ফাইলের বিষয়বস্তু ওভাররাইট করবে।

সেড একটি গ্রহণ করে

যেমন- sed -n…

-এবং -e মানে প্রকাশের জন্য। এর প্যারামিটার হল sed ভাষায় একটি অভিব্যক্তি।

সেড অনেককেই গ্রহণ করে

যেমন) sed -e'expr1 '-e'expr2'

-এন অভিব্যক্তি দ্বারা প্রভাবিত নয় লাইন লুকায়। অর্থাৎ যদি এক্সপ্রেশনটি সেড ভাষায় একটি প্রিন্ট স্টেটমেন্ট হয়, তাহলে প্রিন্ট স্টেটমেন্টে অন্তর্ভুক্ত লাইনগুলিকে আউটপুটে অন্তর্ভুক্ত করা হবে না।

যেমন- sed -n…

উপলব্ধ sed বিকল্পগুলির জন্য আরও দেখুন, sed –help দেখুন

সমতুল্য কমান্ডের শেষ নোট উদাহরণে ব্যবহার করুন

নিম্নলিখিত কমান্ড-লাইন ইউটিলিটি সমতুল্য কমান্ড সহ sed উদাহরণে অন্তর্ভুক্ত করা হয়েছে।

  • সাজান
  • মাথা
  • লেজ
  • খপ্পর
  • বিড়াল
  • এনএস
  • টি

পিছনে এন্ডনোট - উদাহরণস্বরূপ সমতুল্য কমান্ড

যদি আপনি ভাবছেন যে কি হচ্ছে - উদাহরণে চরিত্র, এই নোটটি আপনার জন্য। উদাহরণের বেশিরভাগ কমান্ডের পরে আমি একটি - অক্ষর যুক্ত করেছি যে আমরা আশা করি পাইপের মাধ্যমে ইনপুট প্রাপ্ত হবে। এটাই,

বিড়ালকিছু ফাইল| সাজান -আর-| মাথা -1

যাইহোক, যখন বাম হাতে পাইপটি উপস্থিত থাকে, আমরা নিচের মত ইঙ্গিতটি বাদ দিতে পারি।

বিড়ালকিছু ফাইল| সাজান -আর | মাথা -1

উদাহরণে কমান্ডের পরে - চরিত্রের সাথে এটিই চলছিল।

সেটআপের জন্য ফাংশনে এন্ডনোট

যদি আপনি খুঁজছেন, এখানে উপরের উদাহরণগুলির জন্য সেটআপের ফাংশন রয়েছে। ডিক্লেয়ার -ফ ব্যবহার করে প্রাপ্ত আউটপুট। আরো ব্যবহারের জন্য bash এ ডিক্লেয়ার কমান্ড সম্পর্কে আরও পড়ুন।

কমান্ড

শব্দ()
{
seq 100
}
বার()
{
বের করে দিল ---
}
পুরাতন-পিএইচপি()
{
বের করে দিল 'ereg ($ UA,' Bottybot ')'
}

শেষের সারি

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