यह सेड काम क्यों नहीं कर रहा है?


0

मैं 200 से अधिक html फ़ाइलों में कुछ सीएसएस संदर्भों को बड़े पैमाने पर बदलना चाहता हूं। अधिकांश फाइलें स्थिर HTML स्वचालित रूप से उत्पन्न होती हैं। अब, मुझे कुछ सीएसएस फ़ाइलों का स्थान बदलने की आवश्यकता है। तो, मैंने उस सेड का उपयोग किया:

sed -s 's/href="*_css/href="css/g' ./12*.htm*

स्रोत इस प्रकार है:

href="11.2.Lab%20_css/styles.css"
href="10.2.Lab%20_css/styles.css"

लेकिन पालकी चलाना, कुछ नहीं होता है!

त्रुटि कहां है?

जवाबों:


2

यह भ्रामक है, लेकिन * में एक मनमाना स्ट्रिंग से मेल खाता है bash, जबकि नियमित अभिव्यक्ति में * पिछले पैटर्न को बार-बार मनमाने ढंग से दोहराता है।

तो आपको जरूरत है .* के बजाय * (किसी भी वर्ण को किसी भी समय मेल करें); आपके स्ट्रिंग में अंडरस्कोर के बाद दोहरे-उद्धरणों की एक मनमानी संख्या निर्दिष्ट है।

ध्यान दें कि स्रोत स्ट्रिंग्स में डॉट्स असंबंधित हैं . नियमित अभिव्यक्ति में, जो स्वयं सहित किसी भी चरित्र से मेल खाता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.