2013-08-26 14 views
25

पर रिक्त स्थान के साथ रेड डालने वाली रेखा मेरे पास "हैलो वर्ल्ड" उदाहरण के लिए रिक्त स्थान वाली रेखा है। मैं इस लाइन को किसी फ़ाइल में किसी विशिष्ट पंक्ति में डालना चाहता हूं। उदाहरण के लिए अगले फाइल करने के लिए "दुनिया हैलो" डालनेएक विशिष्ट रेखा

hello 
world 

परिणाम:

hello 
    hello world 
world 

मैं इस sed स्क्रिप्ट का उपयोग कर रहा हूँ:

sed -i "${line} i ${text}" $file 

समस्या यह है कि मैं हो रही है रिक्त स्थान के साथ मेरी नई लाइन:

hello 
hello world 
world 

उत्तर

39

आप space चरित्र बच सकते हैं उदाहरण के 2 रिक्त स्थान जोड़ने के लिए:

sed -i "${line} i \ \ ${text}" $file 

या फिर आप अपने text चर की परिभाषा में यह कर सकते हैं:

text="\ \ hello world" 
+7

तरह इनपुट करने के लिए कई कारतूस की जरूरत है। Sed स्वचालित रूप से बाकी रिक्त स्थान को पहचानने लगते हैं। उदा।, 'एक \ text' पाठ को 4 रिक्त स्थान के साथ आगे जोड़ता है। – haridsv

+0

धन्यवाद! इस तरह के एक सुरुचिपूर्ण समाधान! – ShahNewazKhan

4
$ a=" some string " 
$ echo -e "hello\nworld" 
hello 
world 
$ echo -e "hello\nworld" | sed "/world/ s/.*/${a}.\n&/" 
hello 
    some string . 
world 

. था उपरोक्त प्रतिस्थापन में यह दिखाने के लिए जोड़ा गया है कि पिछली श्वेतस्थान संरक्षित हैं। इसके बजाय sed "/world/ s/.*/${a}\n&/" का उपयोग करें।

5

आप केवल आप ही पहला अंतरिक्ष से बचने के लिए एक \ इस

sed -i "${line} i \ ${text}" $file 
संबंधित मुद्दे