मैंने आईपी पते के तीसरे हिस्से को प्रतिस्थापित करने के लिए निम्नलिखित sed one liner लिखा था।विस्तारित regexp और कैप्चर समूहों का उपयोग करके Sed
sed 's/192\.168\.[0-9]*\.\([0-9]*\)/192.168.15.\1/g'
192.168.0.1
192.168.15.1
मैं ??
जो regexp बढ़ा दिया गया है का उपयोग करके इसे आलसी तो यह 192.168.15
साथ 192.168.0
जगह लेंगे बनाना चाहते लेकिन जब मैं '-r' विकल्प की आपूर्ति मैं निम्नलिखित त्रुटि मिलती है।
$ sed -r 's/192\.168\.[0-9]*\.\([0-9]*\)/192.168.15.\1/g'
sed: -e expression #1, char 44: invalid reference \1 on `s' command's RHS
आप व्याख्या कर सकते हैं यहाँ क्या चल रहा है और कैसे एक अभिव्यक्ति कैप्चर समूहों के उपयोग जबकि आलसी बनाने के लिए किया जाता है?
नोट: मैं कई अलग-अलग दृष्टिकोणों का उपयोग करके उदाहरण प्राप्त कर सकता हूं, मेरा प्रश्न उदाहरण को हल करने का तरीका नहीं है। मैं extened regexp और कब्जे समूहों के साथ sed का उपयोग करने में दिलचस्प हूँ।
एनबी। 'sed -r 's/1 9 2 \ .168 (\। [0-9] *) {2} /192.168.15 \ 1/g'' एक ही परिणाम प्राप्त करता है, पिछला संदर्भ' \ 1' दूसरा देता है दो '(\। [0-9] *) {2}' और regexp के दोहराव से बचाता है। – potong
यह क्लीनर है, अभिव्यक्ति करते समय आलसी 'sed -r'/1 9 2 \ .168 (\। ?? [0-9] *) {2} /192.168.15 \ 1/g'' अभिव्यक्ति करते समय भी मदद करता है 3 भाग के मामले के पीछे पीछे '.' के साथ। –