আমার এই ফাইলটি রয়েছে:
sometext1{
string1
}
sometext2{
string2
string3
}
sometext3{
string4
string5
string6
}
আমি একটি নির্দিষ্ট স্ট্রিংয়ের জন্য এই ফাইলটি অনুসন্ধান করতে চাই {
এবং খোলার আগে পর্যন্ত এই স্ট্রিংয়ের আগে এবং স্ট্রিংয়ের পরে সবকিছু শেষ হয়ে যাওয়া পর্যন্ত মুদ্রণ করতে চাই }
। আমি সেড দিয়ে এটি অর্জনের চেষ্টা করেছি তবে আমি যদি পরিসরের মধ্যে সমস্ত কিছু /{/,/string2/
উদাহরণস্বরূপ সেড প্রিন্ট করার চেষ্টা করি তবে :
sometext1{
string1
}
sometext2{
string2
sometext3{
string4
string5
string6
}
আমি যদি স্ট্রিং "স্ট্রিং 2" সন্ধান করি তবে আমার আউটপুটটি হওয়া দরকার:
sometext2{
string2
string3
}
ধন্যবাদ।
grep -n '' <infile | sed ...
। sed
কমান্ড পরিবর্তন করতে হবে; বিশেষত /
ঠিকানা /
বিটস যা ^
শীর্ষ-লাইনের অ্যাঙ্করগুলির সন্ধান করে। সুতরাং, যদি আপনি আমার উত্তর ব্যবহার করা হয়েছে আপনি সম্ভবত পারে: grep -n '' | sed 'H;/{$/h;/^[^:]*:}/x;/{\n.*PATTERN/!d'
। সমস্ত আউটপুট লাইনগুলি মূল ফাইলের লাইন সংখ্যাগুলির সাথে উপস্থাপিত হবে যার পরে একটি কোলন 1:sometext1{\n2:string1
এবং এর মতো আরও থাকবে। sed
এটির আগে যা ফিল্টার হবে কেবল সেগুলিই ফিল্টার করবে কেবলমাত্র প্রতিটি আউটপুট লাইন একটি সংখ্যা দিয়ে খোলে।