SED: अंतिम पंक्ति के बाद टेक्स्ट डालें?


76

आदेश एक फ़ाइल की शुरुआत के लिए एक टैग सम्मिलित करता है:

sed -i "1s/^/<?php /" file

मैं SED के साथ प्रत्येक फ़ाइल के अंत में कुछ कैसे डाल सकता हूं?


3
{ cat file; echo 'END OF FILE'; } > newFile , यह काम करने के लिए भी शुक्रिया अदा करता है। * (sed नहीं बल्कि कार्य और सरल)

4
एक सरल echo "Cool Text" >> fileचाल भी करनी चाहिए।
डेन्पे

जवाबों:


93

sed -e "\$aTEXTTOEND" सबसे सरल तरीका है।

यह काम किस प्रकार करता है

$अंतिम पंक्ति से मेल खाता है (यह एक सामान्य sedपता है; 4aTEXTTOENDचौथी पंक्ति के बाद सम्मिलित किया जाएगा), aएपेंड कमांड है, और TEXTTOENDएपेंड क्या है।


एक Makefile में $ $ के रूप में बच।
स्टीवेस्लिवा

ओएस एक्स के लिए sed -e '$a\NEWLINE\\'। NEWLINE को वास्तविक नई लाइन से बदलें।
जॉर्ज बुकानन

13
sed -i -e "\ $ aTEXTTOEND" <फ़ाइल नाम> पूरी कमांड होगी।
लास मेयर

2
मैकोस पर काम नहीं कर रहा है। जोर्ज बुकरन की टिप्पणी भी नहीं: sed: 1: "$ a \ NEWLINE \\": एक कमांड के अंत में अतिरिक्त अक्षर \ _ के बाद
Emanuele Paolini

1
डेबियन 9 में यह अंतिम पंक्ति के अंत में जोड़ने के बजाय एक नई रेखा जोड़ता है।
लुसियानो अंड्रेस मार्टिनी

31

sedउस मामले में उपयोग करने की आवश्यकता नहीं है । कैसा रहेगा

echo "<?php" >> file

2
पर्याप्त सच है, लेकिन आप अनुमान लगा सकते हैं कि ओपी के उपयोग के मामले में "के साथ फ़ाइल bracketing है <php " और " >", और एक ही बार में सभी चयनित सामग्री के हवाले से, तो वह शायद वास्तव में एक चाहते हैं करता है sedटुकड़ा।
dmckee

2
इसके अलावा अगर आप ऐसा करेंगे और नई लाइन नहीं चाहते हैं, तो इको-एन का उपयोग करें
विंको वर्सालोविच

2
मुझे अनुमान लगाना पसंद नहीं है। हर बार जब मैं कोशिश करता हूं, तो मैं गलत हूं।

4
एक और कारण है कि स्वीकृत उत्तर अधिक उपयोगी है sudo, इस के साथ prepending के मामले में है , जो इस भिन्नता को विफल करने का कारण बनता है क्योंकि echoएक निष्पादन योग्य फ़ाइल के बजाय एक अंतर्निहित शेल कमांड है$PATH
टोनी सेसरो

@TonyCesaro: echoएक बिल्ट-इन है, लेकिन इसमें एक निष्पादन योग्य फ़ाइल भी पाई गई है$PATH
Zan Lynx

24

मान लें कि आप फ़ाइलों के लिए अंतिम php टैग लगाना चाहते हैं, तो

sed -i '$s/$/\n?>/' file

चाल चलनी चाहिए


1
यह उन मामलों में अच्छी तरह से काम करता है जहां इनपुट की अंतिम पंक्ति के मनमाने ढंग से हेरफेर वांछित है। धन्यवाद!
जे। टेलर

कमांड का एक विघटित विवरण बहुत सराहा जाएगा
GGhe


3

Sed 'append (a)' कमांड का प्रयोग करें। उदाहरण के लिए, फ़ाइल के अंत में दो लाइनें जोड़ने के लिए:

sed -i -e '$a\
foo1 bar1\
foo2 bar2' file

2

किसी फ़ाइल में किसी विशिष्ट पंक्ति में सामग्री में परिवर्तन लिखने और बनाने के लिए एक सरल तरीके से। यदि आप किसी विशिष्ट पंक्ति संख्या में कुछ भी सम्मिलित करना चाहते हैं तो नीचे कमांड का उपयोग किया जा सकता है:

sed -i '2i i have started' sheikh.log

जहां 2i- लाइन नंबर 2 और मैं डालने के लिए खड़ा है। यदि आपको अंतिम पंक्ति में सम्मिलित करना है तो $2 के स्थान पर उपयोग करें । मैंने शुरू किया है - पाठ डाला जाना sheikh.logहै और फ़ाइल नाम है।

हम नीचे दिए गए कमांड का उपयोग करके लाइन में बदलाव भी कर सकते हैं

sed -i '2c we have started' sheikh.log

iको बदल दिया जाता है we

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.