2013-03-05 8 views
6

के साथ परिभाषित चर के साथ रिक्त स्थान के साथ टेक्स्ट को प्रतिस्थापित करने के लिए sed का उपयोग करना मैं परिभाषित चर के साथ रिक्त स्थान वाली रेखा को प्रतिस्थापित करने के लिए sed का उपयोग करने का प्रयास कर रहा हूं।स्लैश

उदाहरण के लिए

,

मैं = "~/afile.py

मैं मान लिया लाइन

sed "s/a dumb string/$lan/g" file.txt 

होगा बदलने के लिए $ लैन, और लैन के साथ 'एक गूंगा स्ट्रिंग' चाहते हैं लेकिन यह file.txt में 'एक गूंगा स्ट्रिंग' भाग खाली छोड़ देता है।

मेरी समस्या काफी सरल लगती है। किसी भी मदद की बहुत सराहना की जाती है।

+2

क्या आप सुनिश्चित हैं कि आपने चर 'Ian' सेट किया है? क्या होता है जब आप 'echo' चलाते हैं <<$Ian>> "'? – ruakh

+2

अब यह एक डंप स्ट्रिंग या गूंगा स्ट्रिंग है ?! –

+0

हा हा, यह एक गूंगा स्ट्रिंग है। क्षमा करें, मैं टाइपो – NPB

उत्तर

10

मैं निर्धारित किया है कि क्योंकि मेरी @lan चर उस में स्लैश है, मैं का उपयोग कर sed आदेश का उपयोग करने की आवश्यकता है:

उदाहरण के लिए

sed "s:a dumb string:$lan:g" file.txt 

यह शायद एक नौसिखिया गलती है, लेकिन मैं नहीं कर रहा हूँ कि sed से परिचित आपके सहयोग के लिए धन्यवाद।

7

sed यह नहीं पता है कि आप एक चर पारित कर रहे हैं - इसे आपके रेगेक्स के एक और हिस्से के रूप में व्याख्या किया जाएगा। अपने प्रतिस्थापन स्लैश शामिल है, तो ऐसा करने के लिए सबसे आसान काम इस तरह एक वैकल्पिक विभाजक वर्ण का उपयोग करें, है: centos में []:: अंतरिक्ष []

sed "s|a dumb string|$lan|g" file.txt 
0

कुछ समय खोज स्ट्रिंग में अंतरिक्ष इसलिए का उपयोग करने के लिए आवश्यक काम नहीं करता।

sed -i 's/User[[:space:]]daemon/User apache/' httpd1.conf 
संबंधित मुद्दे