कैसे sed के साथ कई लाइनों को सम्मिलित करने के लिए


10

मैं इसे जोड़ना चाहता हूं

#this 
##is my 
text

लाइन से पहले

the specific line 

मैंने यह कोशिश की

sed -i '/the specific line/i \
#this 
##is my 
text
' text.txt

लेकिन यह केवल only टेक्स्ट ’में जोड़ता है।

मैंने विभिन्न संयोजनों के साथ भी कोशिश की \और " "कुछ भी काम नहीं किया।

जवाबों:


4

नई सुर्खियों के साथ:

% sed -i '/the specific line/i #this\n##is my\ntext' foo

% cat foo
#this
##is my
text
the specific line

9

आप कुछ पंक्तियों के अंत में पीछे की ओर गायब हैं (और आपके द्वारा सम्मिलित की जाने वाली अंतिम पंक्ति के अंत में आपके पास एक सफल नई पंक्ति है):

sed -i '/the specific line/i \
#this\
##is my\
text' file
% cat file
foo
the specific line
bar

% sed -i '/the specific line/i \
#this\
##is my\
text' file

% cat file
foo
#this 
##is my 
text
the specific line
bar

1

जब प्रतिस्थापन स्ट्रिंग में नई लिंक और स्थान होते हैं, तो आप कुछ और उपयोग कर सकते हैं। हम ls -lकुछ टेम्पलेट फ़ाइल के बीच में आउटपुट डालने का प्रयास करेंगे ।

awk 'NR==FNR {a[NR]=$0;next}
    /Insert index here/ {for (i=1; i <= length(a); i++) { print a[i] }}
    {print}'
    <(ls -l) text.txt

जब आप किसी पंक्ति के बाद कुछ सम्मिलित करना चाहते हैं, तो आप कमांड को स्थानांतरित कर सकते हैं {print}:

sed '/Insert command output after this line/r'<(ls -l) text.txt

आप एक पंक्ति से पहले डालने के लिए sed का उपयोग कर सकते हैं

sed 's/Insert command output after this line/ls -l; echo "&"/e' text.txt
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.