मेरी filename
फ़ाइल की सामग्री इस प्रकार है (उदाहरण के लिए):
My block of line starts from here
START
First line
second line
third line
END
and end to here for example.
मैं उदाहरण के लिए, केवल एक शब्द के बीच START
और उसके END
साथ लाइनों के ब्लॉक को बदलना चाहता हूं SINGLEWORD
। नीचे की तरह:
My block of line starts from here
SINGLEWORD
and end to here for example.
मैं इस कमांड का उपयोग करके लाइनों के अपने ब्लॉक को पा सकता हूं:
grep -Pzo "START(.|\n)*END" filename
और कमांड के ऊपर चलने का परिणाम इस प्रकार होगा:
START
First line
second line
third line
END
तब मैंने सभी लाइनों को एक लाइन में संयोजित करने के लिए इस कमांड का उपयोग किया:
LAST_RESULT | sed -e :a -e '/$/N; s/\n/ /; ta'
तब मुझे यह परिणाम मिलेगा:
START First line second line third line END
और अपने अंतिम आदेश के साथ LAST_RESULTS | sed 's/.*/SINGLEWORD/'
मैं उन्हें बदल देता "SINGLEWORD"
हूं और मुझे यह परिणाम मिलता है।
SINGLEWORD
अब मुझे जो चाहिए वह है: मैं इस कमांड (या आपके सुझाव कमांड) का उपयोग कैसे कर सकता हूं और "SINGLEWORD" शब्द के लिए लाइनों के अपने ब्लॉक को (जगह में) बदल सकता हूं? और अंतिम परिणाम इस फाइल की तरह होगा:
My block of line starts from here
SINGLEWORD
and end to here for example.
sed
करना संभव है लेकिन शायद पढ़ने में कठिन हो (इस सवाल पर गौर करें )