ऐसा लगता है कि आपको एक कॉन्फ़िग फ़ाइल मिल गई है। आप क्या कर सकते हैं जैसा कि एडम सिएमोन / स्लम सुझाते हैं:
sed -nr 's/[^=]+=\s*(.+)$/\1/p' filename
जहां [^=]शामिल नहीं सब '=' अक्षर, +एक या चरित्र का एक ही प्रकार के और अधिक, यह एक वास्तविक के बाद कहते हैं =, \sकोई श्वेत रिक्ति (टैब को शामिल करते \tहैं और नई लाइनों \n, \r\n, और सादे रिक्त स्थान ', जबकि *साधन शून्य या एक ही प्रकार के और अधिक , कोष्ठक में मिलान किए गए वर्ण अनुक्रमों को \ 1, \ 2, ..., \ n प्रतिस्थापन प्लेसहोल्डर्स में रखने के लिए क्या है, का $अर्थ है एक पंक्ति का अंत। यह विशिष्ट प्रतिस्थापन पैटर्न का अनुसरण करता है: s/.../.../modifiersकमांड लाइन विकल्प -rखड़ा होता है। विस्तारित रेगेक्स सिंटैक्स (सुविधा की बात के रूप में) और -nइसका मतलब है कि जब तक या जब तक विस्फोटक अनुरोध नहीं किया जाता है तब तक आउटपुट कुछ भी नहीं होता है। pसंशोधक परिणाम को प्रिंट करता है।
आप gसंशोधक के साथ एक वैश्विक खोज कर सकते हैं जैसे:
sed -nr 's/[^=]+=\s*(.+)$/\1 /pg' filename # note the space after \1
तो आप एक स्ट्रिंग से अलग कर दिया मिलता है कि ' '(हो सकता है \n, \tया आप जो है) जिसे आप आसानी से संसाधित कर सकें।
दोनों मान्य हैं बशर्ते आपके मान एक पंक्ति के अंत तक समीकरण वर्ण अवधि से पहले हो और एक साधारण "मान" से विचलित होने वाले शब्दार्थ के साथ टिप्पणियों या अन्य वर्णों का पालन न करें।
संपादित करें:
मैं अन्य पदों पर अभी तक यहाँ टिप्पणी नहीं कर सकता। रेखा को इंगित करने के लिए, बस पंक्ति संख्या पास करें, आपके मामले में 3, sआरंभ करने से पहले या उद्धरण चार (ठीक उसी तरह जैसे)।
sed -nr '3s/[^=]+=\s*(.+)$/\1/p' filename
कृपया देख लें info sed। उदाहरण के लिए, 3.2 और 4.7 आपके लिए विशेष रुचि रखते हैं।
awkआदेश अच्छा है - लेकिन आप के साथ स्पेस मिल गया है केवल यदि=। यह काम नहीं करेगाPOP3_SERVER_NAME=localhost।