मेरे पास यह फाइल है:
sometext1{
string1
}
sometext2{
string2
string3
}
sometext3{
string4
string5
string6
}
मैं एक विशिष्ट स्ट्रिंग के लिए इस फ़ाइल को खोजना चाहता हूं और इस स्ट्रिंग से पहले सब कुछ प्रिंट करना चाहता हूं {और इस स्ट्रिंग के समापन के बाद सब कुछ }। मैंने इसे sed के साथ हासिल करने की कोशिश की, लेकिन अगर मैंने श्रेणी में सब कुछ प्रिंट करने की कोशिश की, तो /{/,/string2/यह sed प्रिंट करता है:
sometext1{
string1
}
sometext2{
string2
sometext3{
string4
string5
string6
}
अगर मैं स्ट्रिंग "string2" की खोज करता हूं, तो मुझे आउटपुट की आवश्यकता है:
sometext2{
string2
string3
}
धन्यवाद।
grep -n '' <infile | sed ...। sedआदेशों बदलाव की आवश्यकता होगी; विशेष रूप से /एड्रेस /बिट्स जो ^टॉप-ऑफ-लाइन एंकर की तलाश में हैं। इसलिए, यदि आप मेरे उत्तर का उपयोग कर रहे थे तो आप शायद कर सकते थे grep -n '' | sed 'H;/{$/h;/^[^:]*:}/x;/{\n.*PATTERN/!d':। सभी आउटपुट लाइनों को मूल फ़ाइल की पंक्ति संख्याओं के साथ उपसर्ग किया जाएगा 1:sometext1{\n2:string1और उसके बाद एक कॉलोन जैसे और इतने पर। sedकेवल वही फ़िल्टर करेगा जो पहले फ़िल्टर करेगा, सिवाय इसके कि प्रत्येक आउटपुट लाइन एक संख्या के साथ खुलती है।