2012-02-08 25 views
14

के साथ एसईडी का उपयोग करके मैं वाइल्डकार्ड के साथ एक स्ट्रिंग को प्रतिस्थापित करना चाहता हूं लेकिन यह काम नहीं करता है।वाइल्डकार्ड

स्ट्रिंग की तरह "कुछ-स्ट्रिंग-8"

मैं

sed -i 's/string-*/string-0/g' file.txt 

लिखा दिखता है, लेकिन उत्पादन

some-string-08 

उत्तर

25

तारांकन है (*) शून्य या अधिक का अर्थ है " पिछली वस्तु "।

किसी भी एक वर्ण का उपयोग आप मेल करना चाहते हैं

sed -i 's/string-./string-0/g' file.txt 

आप किसी भी स्ट्रिंग मिलान करना चाहते हैं (यानी किसी भी एक वर्ण शून्य या अधिक बार) का उपयोग

sed -i 's/string-.*/string-0/g' file.txt 
+0

अच्छी तरह से, शायद मेरा प्रश्न अधूरा था .... आपका आदेश इस fien के लिए काम करता है। हालांकि अगर मेरे पास 'some-string-8 -x --command acommand' है, तो उस आदेश को निष्पादित करने का आउटपुट' कुछ-स्ट्रिंग -0' है। यह उसके बाद सभी पात्रों को हटा देगा। मैं चाहता हूं कि 'कुछ-स्ट्रिंग -0 -x - कमांड एकांड' – mahmood

+0

ठीक है, पहला आदेश वह है जो मैं चाहता हूं – mahmood

+0

क्या होगा यदि आप प्रतिस्थापन स्ट्रिंग में वाइल्डकार्ड का उपयोग करना चाहते हैं? उदाहरण: 'सीएसी' के साथ 'एएए। * बीबीबी' को प्रतिस्थापित करें। * डीडीडी ' – user2561747

5

तो, की अवधारणा नियमित अभिव्यक्तियों में एक "वाइल्डकार्ड" थोड़ा अलग काम करता है। "किसी भी चरित्र" से मेल खाने के लिए आप "।" "*" संशोधक का मतलब है, किसी भी समय से मेल खाता है।

संबंधित मुद्दे