এই উত্তরটি একটি কাজ চলছে - এটি সাসবস্টিউটি কমান্ড সম্পর্কে আরও উদাহরণ মিস করে
কী sed
?
sed
= স্ট্রিম ইডিটর
GNU sed
4.2.2 প্রতিবেদনের ম্যানুয়াল পৃষ্ঠায় বর্ণনা :
সেড একটি স্ট্রিম সম্পাদক। স্ট্রিম এডিটরটি ইনপুট স্ট্রিমে (কোনও পাইপলাইন থেকে একটি ফাইল বা ইনপুট) মৌলিক পাঠ্য রূপান্তর করতে ব্যবহৃত হয়। কোনও সম্পাদকের মতো কিছু উপায়ে যা স্ক্রিপ্টযুক্ত সম্পাদনাগুলিকে অনুমতি দেয় (যেমন এড), সেড ইনপুট (গুলি) এর উপরে কেবল একটি পাস করে কাজ করে এবং ফলস্বরূপ আরও কার্যকর। তবে এটি একটি পাইপলাইনে পাঠ্য ফিল্টার করার দক্ষতার ক্ষমতা যা এটি অন্য ধরণের সম্পাদক থেকে আলাদা করে।
মধ্যে decription গনুহ sed
gnu.org পৃষ্ঠাটি রিপোর্ট:
সেড (স্ট্রিম এডিটর) কোনও ইন্টারেক্টিভ পাঠ্য সম্পাদক নয়। পরিবর্তে, এটি পাঠ্য ফিল্টার করতে ব্যবহৃত হয়, অর্থাত্ এটি পাঠ্য ইনপুট নেয়, এটিতে কিছু অপারেশন (বা ক্রিয়াকলাপের সেট) সম্পাদন করে এবং পরিবর্তিত পাঠ্যকে আউটপুট দেয়। সেড সাধারণত প্যাটার্ন ম্যাচ ব্যবহার করে কোনও ফাইলের অংশ বের করতে বা ফাইলের মধ্যে স্ট্রিংয়ের একাধিক উপস্থিতি প্রতিস্থাপনের জন্য ব্যবহৃত হয়।
কি জন্য sed
ব্যবহার করা হয়?
এটি ডেটা স্ট্রিমগুলিতে জটিল পরিবর্তন সম্পাদন করতে ব্যবহৃত হতে পারে (সাধারণত পাঠ্য হয় তবে এটি বাইনারি ডেটা পরিবর্তন করতেও ব্যবহৃত হতে পারে)।
ব্যবহারের সবচেয়ে সাধারণ ক্ষেত্রে রয়েছে:
- প্রাথমিক / বর্ধিত নিয়মিত এক্সপ্রেশন ব্যবহার করে একটি পাঠ্য ফাইল থেকে নির্বাচিতভাবে মুদ্রণ / মোছার লাইনগুলি
- বেসিক / বর্ধিত নিয়মিত এক্সপ্রেশন ব্যবহার করে বিশ্বব্যাপী একটি পাঠ্য ফাইলে স্ট্রিং প্রতিস্থাপন
- প্রাথমিক / বর্ধিত নিয়মিত এক্সপ্রেশন ব্যবহার করে নির্বাচিতভাবে একটি পাঠ্য ফাইলে স্ট্রিং প্রতিস্থাপন
এই উত্তরের ব্যবহারের ক্ষেত্রে এটি অন্তর্ভুক্ত।
ব্যবহার
sed
প্রার্থনার সময় কমান্ড-লাইন আর্গুমেন্টে stdin
যদি কোনও ফাইলের নাম নির্দিষ্ট করা থাকে বা কোনও ফাইলের নাম নির্দিষ্ট না করা থাকে তবে ফাইল সিস্টেমে সঞ্চিত একটি ফাইল থেকে ইনপুট পড়ে ।
ফাইল সিস্টেমে সঞ্চিত একটি ফাইল ব্যবহার করে ন্যূনতম প্রার্থনা:
sed '' file
সর্বনিম্ন প্রার্থনা stdin
:
# herestring
<<<'Hello, World!' sed ''
# heredoc
<<'EOF' sed ''
heredoc> Hello, World!
heredoc> EOF
# file
<'file' sed ''
# pipe
echo 'Hello, World!' | sed ''
ওহে বিশ্ব!
sed
ডিফল্টরূপে ইনপুট ফাইলটি লাইন বাই লাইন পড়ে; এটি একটি লাইন পড়ে, এটি লাইনের পিছনের নতুন লাইনটি সরিয়ে দেয় এবং প্রক্রিয়াযুক্ত লাইনটিকে "প্যাটার্ন স্পেস" এ রাখে; অবশেষে, এটি প্যাটার্ন স্পেসের বর্তমান সামগ্রীতে তালিকাবদ্ধ কমান্ডগুলি কার্যকর করে এবং ইনপুট ফাইল থেকে একটি নতুন লাইন পড়ে।
যখন কোনও আদেশ সুনির্দিষ্ট করা হয় না বা যখন একটি p
বা d
কমান্ড নির্দিষ্ট করা থাকে *, sed
সর্বদা প্যাটার্ন স্পেসের বর্তমান বিষয়বস্তুটি প্রতিটি পুনরাবৃত্তিতে একটি নতুন লাইন অনুসরণ করে প্রিন্ট করবে: নির্বিশেষে:
user@debian ~ % sed '' file
Hello, world! # no command but the lines are printed
user@debian ~ % sed 'p' file
Hello, World!
Hello, World! # the p command prints the lines already printed
user@debian ~ % sed 'd' file
user@debian ~ % # the d command deletes the lines that would be printed
এটি রোধ করতে sed
একজন -n
স্যুইচ সহ পাশাপাশি অনুরোধ করতে পারে :
user@debian ~ % sed -n '' file
user@debian ~ % sed -n 'p' file
Hello, World!
user@debian ~ % sed -n 'd' file
user@debian ~ %
* শুধুমাত্র বলতে p
, d
এবং s
কমান্ড, যা এই উত্তর মধ্যে আবৃত কমান্ড।
লাইনের নির্বাচন
sed
পুরো ইনপুট ফাইলটি প্রক্রিয়া করতে পারে বা ইনপুট ফাইলের কেবলমাত্র নির্বাচিত লাইনগুলি প্রক্রিয়া করতে পারে; প্রক্রিয়া করার জন্য ইনপুট ফাইলের লাইনগুলি নির্বাচন করা হয় "ঠিকানাগুলি" নির্দিষ্ট করে; একটি ঠিকানা (অন্যান্য বিষয়ের মধ্যে) হয় একটি লাইন নম্বর বা প্যাটার্ন হতে পারে; ঠিকানার রেঞ্জ নির্দিষ্ট করে রেখার ব্যাপ্তি নির্বাচন করা যেতে পারে।
ঠিকানার সংমিশ্রণগুলি হ'ল:
<N>
(যেখানে <N>
একটি নম্বর রয়েছে): নিম্নলিখিত কমান্ড / কমান্ডগুলি কেবলমাত্র লাইন নম্বরেই কার্যকর করা হবে <N>
;
<N>,<M>
(যেখানে <N>
এবং <M>
দুটি সংখ্যা, <N>
> <M>
): নিম্নোক্ত কমান্ড / কমান্ডগুলি লাইন নম্বর <N>
থেকে লাইন সংখ্যা <M>
সহ অন্তর্ভুক্ত লাইনে কার্যকর করা হবে;
/<pattern>/
(যেখানে <pattern>
একটি বেসিক বা বর্ধিত নিয়মিত অভিব্যক্তি রয়েছে): নিম্নলিখিত কমান্ড / কমান্ডগুলি কেবলমাত্র তার উপস্থিতিযুক্ত লাইনেই সম্পাদন করা হবে <pattern>
;
/<pattern1>/,/<pattern2>/
(যেখানে <pattern1>
এবং <pattern2>
বেসিক বা বর্ধিত নিয়মিত এক্সপ্রেশন হয়): নিম্নলিখিত কমান্ড / কমান্ডগুলি প্রথম সারির লাইন থেকে <pattern1>
পরবর্তী লাইনের উপস্থিতিগুলি সহ <pattern2>
একাধিক আদেশযুক্ত <pattern1>
- <pattern2>
ঘটনার ক্ষেত্রে একাধিকবার উপস্থিতিযুক্ত লাইনগুলিতে কার্যকর করা হবে ;
<N>,/pattern/
(যেখানে <N>
একটি সংখ্যা এবং <pattern>
এটি একটি বেসিক বা বর্ধিত নিয়মিত অভিব্যক্তি): নিম্নোক্ত কমান্ড / কমান্ডগুলি লাইন সংখ্যা <N>
থেকে প্রথম লাইন পর্যন্ত উপস্থিতির উপস্থিতি সহ রেখাগুলিতে কার্যকর করা হবে <pattern>
;
/pattern/,<N>
(যেখানে <pattern>
একটি বেসিক বা বর্ধিত নিয়মিত এক্সপ্রেশন এবং <N>
এটি একটি সংখ্যা): নিম্নোক্ত কমান্ড / কমান্ডগুলি প্রথম লাইন <pattern>
থেকে রেখার সংখ্যার উপস্থিতি যুক্ত লাইনে কার্যকর হবে <N>
;
রেখার সীমাতে বিকল্প মুদ্রণ, মুছতে বা সম্পাদনের জন্য সম্পাদিত নির্বাচনটি সর্বদা নির্দিষ্ট ঠিকানাগুলির সাথে মিলিত লাইনগুলিকে অন্তর্ভুক্ত করবে; তদ্ব্যতীত, নিদর্শনগুলি ব্যবহার করে রেখাগুলির রেঞ্জগুলিতে বিকল্প মুদ্রণ, মুছতে বা সম্পাদনের জন্য সম্পাদনা করা নির্বাচনটি অলস এবং বিশ্বব্যাপী (অর্থাত, প্রতিটি প্রভাবিত পরিসীমা সর্বদা যথাসম্ভব ক্ষুদ্রতম হবে এবং একাধিক ব্যাপ্তি প্রভাবিত হবে)।
রেখার রেঞ্জগুলি মুদ্রণ করার সময় বা কেবলমাত্র এমন রেখাগুলির মুদ্রণ যখন কোনও প্রতিস্থাপন সম্পাদন করা হয়েছে, দুটি বার মুদ্রণের জন্য মানদণ্ডের সাথে মিলিত রেখাগুলি রোধ করার জন্য স্যুইচটির sed
সাথে অনুরোধ করা প্রয়োজন -n
(এটি কেবলমাত্র লাইনের সীমার প্রিন্টিংয়ের সময় ঘটে) এবং ক্রমে নির্বিশেষে মুদ্রণের জন্য মানদণ্ডের সাথে মেলে না এমন লাইনগুলি রোধ করতে।
প্রসেস করার জন্য লাইনগুলির একটি নির্বাচন একটি কমান্ডের পরে বা একাধিক সেমিকোলন-বিচ্ছিন্ন কমান্ড দ্বারা ব্রেস ব্যবহার করে গোষ্ঠীভুক্ত হওয়া আবশ্যক।
আদেশগুলি: মুদ্রণ, মুছুন
একটি নির্বাচন মুদ্রণ বা মুছতে ব্যবহৃত আদেশগুলি যথাক্রমে:
p
: নির্দিষ্ট ঠিকানা / ঠিকানার পরিসরের সাথে মিল রেখে লাইনগুলি মুদ্রণ করে;
d
: নির্দিষ্ট ঠিকানা / ঠিকানার পরিসীমা মেলে লাইনগুলি মুছে ফেলে;
যখন এই কমান্ডগুলির মধ্যে একটি ঠিকানা / নির্বাচনের আগে না হয়, কমান্ডটি বিশ্বব্যাপী কার্যকর করা হয়, অর্থাৎ ইনপুট ফাইলের প্রতিটি লাইনে।
উদাহরণ: মুদ্রণ, মুছুন
সংখ্যার ঠিকানা নির্দিষ্ট করে রেখা মুদ্রণ / মুছে ফেলা:
নমুনা ফাইল:
line1
line2
line3
line4
line5
sed -n '<N>p' file
user@debian ~ % sed -n '3p' file
line3
sed '<N>d' file
user@debian ~ % sed '3d' file
line1
line2
line4
line5
- অন্তর্ভুক্ত
<N>
করতে মুদ্রণ লাইন <M>
:
sed -n '<N>,<M>p' file
user@debian ~ % sed -n '2,4p' file
line2
line3
line4
- লাইন মুছে ফেলা হচ্ছে
<N>
থেকে <M>
সমেত:
sed '<N>,<M>d' file
user@debian ~ % sed '2,4d' file
line1
line5
নিদর্শন নির্দিষ্ট করে রেখাগুলি মুদ্রণ / মুছে ফেলা:
নমুনা ফাইল:
First line
Start printing / deleting here
Random line
Random line
Random line
Stop printing / deleting here
Last line
- মুদ্রণ লাইন মিলছে
<pattern>
:
sed -n '/<pattern>/p' file
user@debian ~ % sed -n '/print/p' file
Start printing / deleting here
Stop printing / deleting here
- মিলছে লাইনগুলি
<pattern>
:
sed '/<pattern>/d' file
user@debian ~ % sed '/print/d' file
First line
Random line
Random line
Random line
Last line
<pattern1>
লাইন মেলানো <pattern2>
সমেত লাইন থেকে মুদ্রণ লাইনগুলি :
sed -n '/<pattern1>/,/<pattern2>/p' file
user@debian ~ % sed -n '/Start/,/Stop/p' file
Start printing / deleting here
Random line
Random line
Random line
Stop printing / deleting here
- লাইন মিলের
<pattern1>
সাথে লাইন মিলের সাথে লাইনগুলি মোছা <pattern2>
:
sed '/<pattern1>/,/<pattern2>/d' file
user@debian ~ % sed '/Start/,/Stop/d' file
First line
Last line
আদেশ: বিকল্প
নির্বাচনের পরিবর্তে প্রতিস্থাপনের জন্য ব্যবহৃত আদেশটি হ'ল:
s
: নির্দিষ্ট ঠিকানা / ঠিকানার পরিসরের সাথে মিল রেখে লাইনগুলি প্রতিস্থাপন করে;
যখন এই কমান্ডটি কোনও ঠিকানা / নির্বাচনের আগে না হয়, কমান্ডটি বিশ্বব্যাপী কার্যকর করা হয়, অর্থাৎ ইনপুট ফাইলের প্রতিটি লাইনে।
s
কমান্ডের বাক্য গঠনটি হ'ল:
s/<pattern>/<replacement_string>/<pattern_flags>
স্ল্যাশগুলি হ'ল "ডিলিমিটার"; তারা সীমানা ব্যবহার করা হয় <pattern>
, <replacement_string>
এবং <pattern_flags>
বিভাগে;
ডিলিমিটারটি সর্বদা s
কমান্ডের সাথে সাথেই অক্ষরটি অনুসরণ করে ; এটি অন্য কোনও চরিত্রে সেট করা যেতে পারে, উদাহরণস্বরূপ |
:
s|<pattern>|<replacement_string>|<pattern_flags>
<pattern>
একটি মৌলিক বা বর্ধিত নিয়মিত প্রকাশ; <replacement_string>
একটি স্থির স্ট্রিং যা sed
একটি বিশেষ অর্থ সহ নির্দিষ্ট বৈশিষ্ট্যগুলি অন্তর্ভুক্ত করতে পারে ; <pattern_flags>
পতাকাগুলির একটি তালিকা যা এর আচরণটি পরিবর্তন করে <pattern>
।
sed
একটি বিশেষ অর্থ সহ সর্বাধিক সাধারণ- নির্দিষ্ট সিকোয়েন্সগুলি:
&
: ব্যাকরেফারেন্সটি স্ট্রিংয়ের সাথে মিলে প্রতিস্থাপিত হয়েছে <pattern>
;
\<N>
(যেখানে <N>
একটি সংখ্যা): <N>
ক্যাপচার করা গোষ্ঠীর সাথে প্রতিস্থাপন প্রতিস্থাপন করা হয়েছে <pattern>
;
সর্বাধিক সাধারণ পতাকা:
g
: <pattern>
বিশ্বব্যাপী ম্যাচ করার জন্য বাহিনী , অর্থাৎ প্রতিটি লাইনে একাধিকবার;
i
: <pattern>
সংবেদনশীলতার সাথে কেস মেলে ধরতে বাহিনী ;
p
: লাইনগুলি মুদ্রণ করে যার পরিবর্তে আরও একবার প্রতিস্থাপন সম্পাদন করা হয়েছে ( কেবলমাত্র সেই রেখাগুলির প্রতিস্থাপনের জন্য -n
স্যুইচটি ব্যবহারের সময় দরকারী sed
যা কেবলমাত্র প্রতিস্থাপন করা হয়েছে);
উদাহরণ: বিকল্প
নমুনা ফাইল:
A-well-a everybody's heard about the bird
B-b-b-bird, bird, bird, b-bird's the word
A-well-a bird, bird, bird, the bird is the word
A-well-a bird, bird, bird, well the bird is the word
A-well-a bird, bird, bird, b-bird's the word
A-well-a bird, bird, bird, well the bird is the word
A-well-a bird, bird, b-bird's the word
A-well-a bird, bird, bird, b-bird's the word
A-well-a bird, bird, bird, well the bird is the word
A-well-a bird, bird, b-bird's the word
A-well-a don't you know about the bird?
Well, everybody knows that the bird is the word!
A-well-a bird, bird, b-bird's the word
A-well-a...
- প্রথম occurence প্রতিস্থাপন
<pattern>
সঙ্গে <replacement_string>
প্রতিটি লাইনে করুন:
sed 's/<pattern>/<replacement_string>/' file
user@debian ~ % sed 's/bird/birds/' file
A-well-a everybody's heard about the birds
B-b-b-birds, bird, bird, b-bird's the word
A-well-a birds, bird, bird, the bird is the word
A-well-a birds, bird, bird, well the bird is the word
A-well-a birds, bird, bird, b-bird's the word
A-well-a birds, bird, bird, well the bird is the word
A-well-a birds, bird, b-bird's the word
A-well-a birds, bird, bird, b-bird's the word
A-well-a birds, bird, bird, well the bird is the word
A-well-a birds, bird, b-bird's the word
A-well-a don't you know about the birds?
Well, everybody knows that the birds is the word!
A-well-a birds, bird, b-bird's the word
- সব occurences প্রতিস্থাপন
<pattern>
সঙ্গে <replacement_string>
প্রতিটি লাইনে করুন:
sed 's/<pattern>/<replacement_string>/g' file
user@debian ~ % sed 's/bird/birds/g' file
A-well-a everybody's heard about the birds
B-b-b-birds, birds, birds, b-birds's the word
A-well-a birds, birds, birds, the birds is the word
A-well-a birds, birds, birds, well the birds is the word
A-well-a birds, birds, birds, b-birds's the word
A-well-a birds, birds, birds, well the birds is the word
A-well-a birds, birds, b-birds's the word
A-well-a birds, birds, birds, b-birds's the word
A-well-a birds, birds, birds, well the birds is the word
A-well-a birds, birds, b-birds's the word
A-well-a don't you know about the birds?
Well, everybody knows that the birds is the word!
A-well-a birds, birds, b-birds's the word
A-well-a...
- কেবলমাত্র লাইনগুলি নির্বাচন করে শুরু করা
<pattern1>
এবং এর <pattern2>
সাথে সমস্ত উপস্থিতি প্রতিস্থাপন <replacement_string>
:
sed -n '/^<pattern1>/s/<pattern2>/<replacement_string>/pg' file
user@debian ~ % sed -n '/^A/s/bird/birds/pg' file
A-well-a everybody's heard about the birds
A-well-a birds, birds, birds, the birds is the word
A-well-a birds, birds, birds, well the birds is the word
A-well-a birds, birds, birds, b-birds's the word
A-well-a birds, birds, birds, well the birds is the word
A-well-a birds, birds, b-birds's the word
A-well-a birds, birds, birds, b-birds's the word
A-well-a birds, birds, birds, well the birds is the word
A-well-a birds, birds, b-birds's the word
A-well-a don't you know about the birds?
A-well-a birds, birds, b-birds's the word
- শেষ হওয়া লাইনগুলি নির্বাচন করা
<pattern1>
এবং এর <pattern2>
সাথে সমস্ত উপস্থিতি প্রতিস্থাপন <replacement_string>
:
sed -n '/<pattern1>$/s/<pattern2>/<replacement_string>/pg' file
user@debian ~ % sed -n '/word$/s/bird/birds/pg' file
B-b-b-birds, birds, birds, b-birds's the word
A-well-a birds, birds, birds, the birds is the word
A-well-a birds, birds, birds, well the birds is the word
A-well-a birds, birds, birds, b-birds's the word
A-well-a birds, birds, birds, well the birds is the word
A-well-a birds, birds, b-birds's the word
A-well-a birds, birds, birds, b-birds's the word
A-well-a birds, birds, birds, well the birds is the word
A-well-a birds, birds, b-birds's the word
A-well-a birds, birds, b-birds's the word
Sed is a stream editor. A stream editor is used to perform basic text transformations on an input stream (a file or input from a pipeline). While in some ways similar to an editor which permits scripted edits (such as ed), sed works by making only one pass over the input(s), and is consequently more efficient. But it is sed's ability to filter text in a pipeline which particularly distinguishes it from other types of editors.