sed
এর এপিআই আদিম - এবং এটি নকশা দ্বারা। অন্তত, এটা আছে রয়ে নকশা আদিম - এটি শুরু আমি বলতে পারব না এ যে primitively পরিকল্পনা করা হয়েছিল। বেশিরভাগ ক্ষেত্রে একটি sed
স্ক্রিপ্ট লেখা যা চালিত হলে, অন্য sed
স্ক্রিপ্টটি আউটপুট দেয় সত্যই এটি সাধারণ বিষয়। sed
ম্যাক্রো প্রিপ্রোসেসর যেমন m4
এবং / অথবা এর মাধ্যমে খুব প্রায়ই এইভাবে প্রয়োগ করা হয় make
।
(এরপরে যা যা ঘটেছিল তা হাইপোথিটিক্যাল ব্যবহারের ক্ষেত্রে: এটি একটি সমাধান অনুসারে ইঞ্জিনিয়ারড সমস্যা If
নিম্নলিখিত ইনপুট ফাইলটি বিবেচনা করুন:
cat <<"" >./infile
camel
cat dog camel
dog cat
switch
upper
lower
যদি আমরা কোনও sed
স্ক্রিপ্ট লিখতে চেয়েছিলাম যা উপরের ইনপুট ফাইলের প্রতিটি উপযুক্ত শব্দের লেজের সাথে শব্দের সংক্ষিপ্ত শব্দ যুক্ত করতে পারে তবেই যদি এটি যথাযথ প্রসঙ্গে একটি লাইনে পাওয়া যায় এবং আমরা যথাসম্ভব দক্ষতার সাথে এটি করতে চেয়েছিলাম ( আমাদের লক্ষ্য হিসাবে হওয়া উচিত, উদাহরণস্বরূপ, একটি সংকলন অপারেশন চলাকালীন) তখন আমাদের যতটা সম্ভব রিজেক্সএক্স গুলি এড়ানো পছন্দ করা উচিত ।/
/
একটি জিনিস আমরা এখনই করতে পারি এটি আমাদের সিস্টেমে এখনই ফাইলটির প্রাক সম্পাদনা করা এবং sed
সংকলনের সময় কখনও কল করা উচিত নয়। তবে যদি ফাইলের এই শব্দগুলির মধ্যে কোনওটি স্থানীয় সেটিংস এবং / অথবা সংকলন-সময় বিকল্পগুলির উপর ভিত্তি করে অন্তর্ভুক্ত করা উচিত বা না করা থাকে, তবে সম্ভবত এটি করা পছন্দসই বিকল্প হবে না।
আর একটি জিনিস যা আমরা করতে পারি তা হ'ল ফাইলটিকে এখন প্রক্রিয়াজাতকরণের বিরুদ্ধে প্রক্রিয়াকরণ করা। আমরা উত্পাদন করতে পারি - এবং আমাদের সংকলনে অন্তর্ভুক্ত করতে পারি - একটি sed
স্ক্রিপ্ট যা লাইন নম্বর অনুযায়ী সম্পাদনাগুলি প্রয়োগ করতে পারে - যা সাধারণত দীর্ঘমেয়াদে অনেক বেশি দক্ষ রুট।
উদাহরণ স্বরূপ:
n=$(printf '\\\n\t')
grep -En 'camel|upper|lower' <infile |
sed " 1i${n%?}#!/usr/heirloom/bin/posix2001/sed -nf
s/[^:]*/:&$n&!n;&!b&$n&/;s/://2;\$a${n%?}q"'
s/ *cat/!/g;s/ *dog/!/g
s| *\([cul][^ ]*\).*|s/.*/\1-case/p|'
... যা sed
স্ক্রিপ্ট আকারে আউটপুট লিখে এবং যা দেখতে ...
#!/usr/heirloom/bin/posix2001/sed -nf
:1
1!n;1!b1
1s/.*/camel-case/p
:2
2!n;2!b2
2!!s/.*/camel-case/p
:5
5!n;5!b5
5s/.*/upper-case/p
:6
6!n;6!b6
6s/.*/lower-case/p
q
যখন সেই আউটপুটটি আমার মেশিনে ./bang.sed
চালিত টেক্সট ফাইলে সংরক্ষিত হয়েছে এবং নাম চালানো হয়েছে ./bang.sed ./infile
, তখন আউটপুটটি হ'ল:
camel-case
upper-case
lower-case
এখন আপনি আমাকে জিজ্ঞাসা করতে পারেন ... আমি কেন এটি করতে চাই? আমি কেন শুধু grep
ম্যাচগুলি অ্যাঙ্কর করব না ? কেহ উট-কেস ব্যবহার করে? এবং প্রতিটি প্রশ্নের আমি কেবল উত্তর দিতে পারি, আমার কোনও ধারণা নেই ... কারণ আমি তা করি না। এই প্রশ্নটি পড়ার আগে আমি ব্যক্তিগতভাবে কখনই মাল্টিটি লক্ষ্য করিনি ! অনুমান মধ্যে প্রয়োজনীয়তা পার্সিং - আমি মনে করি এটি একটি সুন্দর ঝরঝরে ধরা।
মাল্টি-! তাত্ক্ষণিকভাবে আমার কাছে বিষয়টি বুঝতে পেরেছিল, যদিও - sed
স্পেসিফিকেশনটির বেশিরভাগ অংশ কেবল পার্স করা এবং কেবল উত্পন্ন sed
স্ক্রিপ্টগুলির দিকে থাকে। সেই প্রসঙ্গে আরও অনেক বেশি \n
অর্থবোধ করার জন্য আপনি সম্ভবত প্রয়োজনীয় ই -লাইন ডিলিমিটারগুলি খুঁজে পাবেন [wr:bt{]
এবং আপনি যদি এই ধারণাটি মাথায় রাখেন তবে আপনি অনুমানের কিছু অন্যান্য দিক সম্পর্কে আরও ভাল ধারণা নিতে পারেন - (যেমন :
কোনও ঠিকানা গ্রহণ না করা, এবং q
অস্বীকার করার মতো) 1 এর চেয়ে বেশি কোনও গ্রহণ করুন) ।
উদাহরণে উপরে আমি একটি নির্দিষ্ট ফর্মটি লিখতে sed
যা শুধুমাত্র পারেন স্ক্রিপ্ট কি কখনো একবার পড়া যেতে। আপনি যদি এটির দিকে নজর দেন তবে আপনি খেয়াল করতে পারেন যে sed
এডিট ফাইলটি পড়ার সাথে সাথে এটি একটি কমান্ড-ব্লক থেকে পরের দিকে অগ্রসর হয় - এটি সম্পাদনা-ফাইলের মাধ্যমে সম্পূর্ণ সম্পাদন না হওয়া পর্যন্ত এটি কখনও সম্পাদনা-স্ক্রিপ্ট থেকে দূরে শাখা বা সম্পূর্ণ করে না।
আমি যে বহু- বিবেচনা ! অন্য কারওের তুলনায় ঠিকানাগুলি সেই প্রসঙ্গে আরও কার্যকর হতে পারে তবে সত্যতার সাথে আমি এমন একটি ক্ষেত্রেও ভাবতে পারি না যেখানে আমি এটি খুব ভাল ব্যবহার করতে পেরেছি - এবং আমি sed
অনেক কিছুই। আমি আরও উল্লেখযোগ্যভাবে মনে করি যে জিএনইউ / বিএসডি sed
উভয়ই এটি নির্দিষ্ট হিসাবে পরিচালনা করতে ব্যর্থ হয়েছে - এটি সম্ভবত খুব বেশি চাহিদা রয়েছে এমন অনুমানের একটি দিক নয়, এবং যদি কোনও বাস্তবায়ন এটি পর্যালোচনা করে তবে আমি সন্দেহ করি যে তাদের বাগগুলি @ বক্স ক্ষতিগ্রস্থ হবে ফলস্বরূপ ফলাফল।
তাই বলা হয়, ব্যর্থতা উল্লিখিত এই হ্যান্ডেল করতে হয় কোনো বাস্তবায়নের একটি বাগ যা সম্মতি ভান, এবং তাই আমি প্রাসঙ্গিক দেব বক্স নামক-এর জন্য এখানে করা হয় একটি ইমেল শুটিং মনে করি, এবং আমি আপনি না তা করার মনস্থ করা।
!
টগল হিসাবে কাজ করে, হিসাবে/pattern/!!
একই/pattern/
এবং/pattern/!!!
একই হিসাবে/pattern/!
। ফ্রিবিএসডি-তে একাধিক!
একক হিসাবে একই।