Sed ile birden çok satır nasıl eklenir


10

Bunu eklemek istiyorum

#this 
##is my 
text

çizgiden önce

the specific line 

Bunu denedim

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

ancak yalnızca 'metin' içine eklenir.

Ayrıca çeşitli kombinasyonları denedim \ve " "hiçbir şey işe yaramadı.

Yanıtlar:


4

Yeni satırlarla:

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

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

9

Bazı satırların sonunda sondaki ters eğik çizgiyi kaçırıyorsunuz (ve eklemek istediğiniz son satırın sonunda ek bir satırsonu var):

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

Yeni dize satır satırları ve boşluklar içeriyorsa, başka bir şey kullanabilirsiniz. Çıktısını ls -lbazı şablon dosyalarının ortasına yerleştirmeye çalışacağız .

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

Bir satırdan sonra bir şey {print}eklemek istediğinizde, komutu taşıyabilir veya şuna geçebilirsiniz:

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

Sed ile bir satırdan önce eklemek için de kullanabilirsiniz

sed 's/Insert command output after this line/ls -l; echo "&"/e' text.txt
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.