cat 'Extract Text Output.rtf' | sed -n 's/Order Number : \(.*\)\\/\1/gp'
पैदावार ठीक वही है जो आप चाहते हैं।
स्पष्टीकरण:
sed -n
दमन के डिफ़ॉल्ट उत्पादन को दबाने
s/.../.../g
खोज और बदलें, जी: सब कुछ / विश्व स्तर पर
Order Number : \(.*\)\\
" Order Number :
" स्ट्रिंग के लिए देखें और backslash
समूह 1 के बीच में कुछ भी बचाएं; (sed का उपयोग करने के नकारात्मक पक्ष को regex के ग्रुपिंग ऑपरेटर से बचना है: (...)
साथ \(...\)
)
\1
प्रतिस्थापन के रूप में समूह 1 का उपयोग करें
p
किसी भी मैच अगर प्रिंट प्रतिस्थापन
यह हार्ड-कोडेड awk समूहों ($ 7) का उपयोग करने की तुलना में अधिक लचीला और सामान्य तरीका है।
नोट 1: उपयोग। * यदि आपके पास इस तरह से स्वरूपित लाइनें हैं:
\cf2 Fab Order Number : FAB00772450\ \b \cf2
यह रेगेक्स को लालची होने से रोकता है और पहले बैकस्लैश पर रुक जाता है। परीक्षण नहीं अगर sed * का समर्थन करता है? और + ऑपरेटरों, लेकिन चलो आशा करते हैं।
नोट 2: यदि आपके पास कई भाग हैं जिन्हें आप एक पंक्ति से निकालना चाहते हैं, तो कई समूहों का उपयोग करें और प्रतिस्थापन स्ट्रिंग में आप उन्हें स्वरूपण के साथ स्विच भी कर सकते हैं, जैसे .../\2 - \1/