2014-09-02 7 views
6

मैं एसईडी का उपयोग कर एक फाइल में तीसरी लाइन के लिए पाठ सम्मिलित करने के लिए कोशिश कर रहा हूँ, और वाक्य रचना मैं अन्य मंचों पर मिल गया है है:एसईडी डालने लाइन आदेश OSX

sed -i '' "3i\ text to insert" file 

जब मैं इस तथापि उपयोग करते हैं, मुझे एक त्रुटि मिलती है:

sed: 1: "3i\ text to insert": extra characters after \ at the end of i command 

मुझे यह पता लगाना प्रतीत नहीं होता कि समस्या का कारण क्या है। मैं ओएसएक्स का उपयोग कर रहा हूं, यही कारण है कि मेरे पास मेरे एक्सटेंशन के रूप में खाली है।

धन्यवाद!

उत्तर

19

आप सीधे \ के बाद एक नई पंक्ति रखना चाहिए:

sed '3i\ 
text to insert' file 

यह वास्तव में व्यवहार POSIX specification द्वारा परिभाषित किया गया है। तथ्य यह है कि जीएनयू sed आपको एक ही पंक्ति पर डालने के लिए पाठ निर्दिष्ट करने की अनुमति देता है एक विस्तार है।

+3

मैं उनका कहना है कि '' 3i' बिट के बाद सम्मिलित पाठ 'एक है के लिए एक अतिरिक्त +1 देना चाहते हैं जीएनयू एक्सटेंशन (लेकिन मैं केवल उनमें से एक दे सकता हूं)। –

+0

@ जोनाथन लेफ्लर मैं उन्हें आपकी ओर से दूसरा +1 दूंगा :-) –

6

पर OSX आप का उपयोग कर सकते हैं:

sed -i.bak '3i\ 
text to insert 
' file 
1

यहाँ कैसे एक पंक्ति वाक्य रचना में यह करने के लिए है

sed -i '' -e "2s/^//p; 2s/^.*/text to insert/" file 
  • डुप्लिकेट दूसरी पंक्ति: 2s/^//p;

  • अपने पाठ के साथ नई लाइन की जगह: 2s/^.*/text to insert/

0

यह काम करता है मेरे लिए

sed -i '' '3i\ 
text to insert' file 
0

यदि आप विशिष्ट फ़ाइल प्रकार (.sh में मेरे मामले में) फ़ाइल को संशोधित करना चाहते हैं तो इस कमांड का उपयोग करें।

sed -i '.sh' '3i\ 
mymodified text to insert' temp.sh 

सुनिश्चित करें कि आप के बाद स्लैश ("\") लाइन ब्रेक किया है

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