একাধিক লাইনে বাক্যটির পরিবর্তে সেড বিকল্প করুন


11

আমি সেড ব্যবহারে নতুন তবে আমি s/..../..../সম্পূর্ণ বাক্যটি যদি এক লাইনে থাকে তবে তা পরিবর্তনের জন্য সেডের (বিকল্প) পরীক্ষা-নিরীক্ষা করে যাচ্ছি, তবে দুটি বাক্যে পৃথক পৃথক পৃথক বাক্যকে কীভাবে সংশোধন করতে হবে তার বিকল্প সমাধান সম্পর্কে আমি অবগত নই:

এই:

Lorem Ipsum is simply dummy text of the printing and typesetting industry.

আসলে এই হিসাবে লেখা হয়:

Lorem Ipsum is simply dummy text of the 
printing and typesetting industry.

আপনি এটির জন্য কীভাবে সনাক্ত করতে পারেন বা পুরো বাক্যটির পরিবর্তে এটি দুটি কোডের পরিবর্তে দুটি লাইনে রেখে কোড কোড করবেন?


গ্রেট সেড রেফারেন্স বই: ড্যানিয়েল এ গোল্ডম্যানের টিউটোরিয়াল এবং রেফারেন্সের জন্য সংজ্ঞাবহ গাইড ISBN: 978-1-939824-01-1 (EPUB সংস্করণ) 08148804441822
জো

উত্তর:


16

নিম্নলিখিত কমান্ড উভয় পরিস্থিতিতে কাজ করবে:

sed '/Lorem.*/ {N; s/Lorem.*industry\./string to replace/g}' filename

আরও ব্যাখ্যা: আমি মাল্টি-লাইন স্ট্রিং প্রতিস্থাপনের জন্য কীভাবে সেড ব্যবহার করতে পারি?


3
@ গিলস আমি আপনার ভাল উদ্দেশ্যগুলি বুঝতে পারি, তবে দয়া করে আমার উত্তর জড়িয়ে দেওয়ার আগে পরীক্ষা করার চেষ্টা করুন। আরও ভাল, যদি আপনার অন্য মতামত থাকে তবে অন্য উত্তর যুক্ত করা বা কোনও মন্তব্য দেওয়া।
রাদু রেডানু


@ গিলস দয়া করে, আপনাকে দুষ্টু হওয়ার দরকার নেই। আপনার "কোড" একেবারে কিছুই প্রতিস্থাপনের বিষয়টিও লক্ষ্য করা উচিত । যেমনটি আমি বলেছি, আমি আপনার ভাল উদ্দেশ্যগুলি বুঝতে পারি। আমার উদাহরণ থেকে আমি অনুমান করি যে একাধিক লাইনে কোনও বাক্যটির বিকল্প কীভাবে বোঝাতে হবে ওপিকে sedআরও কিছু নয় nothing এবং এটি শিরোনাম প্রশ্ন। শিরোনাম সম্পর্কে হয় না perl
রাদু রেডানু

না, আমি পোস্ট করা কোডটি কাজ করে। (যদি Loremশেষ পংক্তিতে থাকে তবে একটি ত্রুটি এটি আপনার সংস্করণে ভাগ করে দেয়))
গিলস 'সে-খারাপ হওয়া বন্ধ করুন'


12

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

পার্ল এই ধরণের জিনিস সুন্দরভাবে করতে পারে। ব্যবহার করুন -pসুইচ এটা একটি সময়ে স্ট্যান্ডার্ড ইনপুট একটি রেকর্ড প্রক্রিয়া করতে এবং পরিবর্তন রেকর্ড (a la sed), মুদ্রণ এবং -000অনুচ্ছেদ মোড চালু করতে (যেখানে রেকর্ড ফাঁকা রেখা দ্বারা পৃথক করা হয়)। একটি নিয়মিত অভিব্যক্তিগুলিতে, \sএকটি নিউলাইন সহ কোনও সাদা স্থানের অক্ষরের সাথে মেলে।

perl -p -000 -e 's/Lorem\s+Ipsum\s+is\s+simply\s+dummy\s+text\s+of\s+the\s+printing\s+and\s+typesetting\s+industry\./Replacement text/g'

যদি মূলটিতে একটি থাকে তবে আপনি প্রতিস্থাপন পাঠ্যে একটি নতুন লাইন রাখতে চান, এটি আরও জটিল। কীভাবে এটি করা যায় আপনার নতুন প্রয়োজনীয়তাটি কোথায় রাখা উচিত তা আপনার প্রয়োজনীয়তার উপর নির্ভর করে।


@ ইটারডন আহ, আমি একাধিক সাদা স্থানের অনুমতি দেওয়ার কথা বলতে চাইছিলাম কিন্তু ভুলে গিয়েছি। ধন্যবাদ, স্থির।
গিলস 'অশুভ হওয়া বন্ধ করুন'

প্রশ্নটি সম্পর্কে sed। এটি দিয়ে ট্যাগ করা হয় sed, সঙ্গে নয় perl
রাদু রেডানু

0

সেড একাধিক লাইনে সহজেই পড়তে পারে না। perl -i -0pe 's/.../.../...'পরিবর্তে ব্যবহার করুন।


7
সেড একাধিক লাইন জুড়ে পড়তে পারেন !
রাদু রেডানু

3
@ রাদুআরডিয়ানু প্রযুক্তিগতভাবে, হ্যাঁ। তবে সমস্যাটি খুব কমই উপযোগী।
গিলস 'অশুভ হওয়া বন্ধ করুন'

3
@ গিলস যদি ব্যবহার করা আপনার perlপক্ষে আরও সহজ হয় তবে এর অর্থ এটি হ'ল sedদুর্লভ সমস্যার জন্য খুব কমই।
রাদু রেদানু
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.