2011-12-21 19 views
9
sed -i "/xxxxxxxxxxxx/r inc-sausage" git.html 
sed -i "/xxxxxxxxxxxx/d" git.html 

पहले से स्थानापन्न पैटर्न मैं इंक-सॉसेज की सामग्री सम्मिलित जब XXXXXXXXXXXXकी जगह/फ़ाइल सामग्री

दूसरा पाया जाता है मेरे द्वारा हटाए जाने XXXXXXXXXXXX

दोनों आदेशों मैं वास्तव में क्या चाहते हैं। लेकिन मैं दोनों sed आदेशों को एक साथ कैसे जोड़ सकता हूं? मैं

sed -i "s/xxxxxxxxxxxx/r inc-sauasge" git.html 

उत्तर

9

शुरुआत के लिए करने की कोशिश की, तो आप एक लाइन में दोनों sed आदेशों को श्रेणीबद्ध और खोज स्ट्रिंग दोहरा, इस तरह से बचने के coould: इसके अलावा

sed -i -e "/xxxxxxxxxxxx/r inc-sausage" -e "//d" git.html 

, यदि आप केवल और नहीं xxxxxxxxxxxx हटाना चाहते हैं अपनी लाइन में अन्य बातों के, तो आप उस के बजाय कर सकता है:

sed -i -e "/xxxxxxxxxxxx/r inc-sausage" -e "s///" git.html 
3

यह आप के लिए काम कर सकते हैं:

sed -i '/xxxxxxxxxxxx/{r inc-sausage'$'\n''d}' git.html 

स्पष्टीकरण:

here देखें क्यों $'\n' आवश्यक है। यह भी ध्यान रखें कि d आदेश स्थायी होना चाहिए क्योंकि यह पैटर्न स्थान हटा देता है और फिर तुरंत अगले चक्र को प्रारंभ करता है।

या जीएनयू के लिए sed:

sed -i '/xxxxxxxxxxxx/s|.*|cat inc-sausage|e' git.html 
संबंधित मुद्दे