ฉันต้องการเพิ่มสิ่งนี้
#this
##is my
text
ก่อนที่จะสาย
the specific line
ฉันลองสิ่งนี้
sed -i '/the specific line/i \
#this
##is my
text
' text.txt
แต่เพิ่มเฉพาะใน 'ข้อความ'
ฉันยังพยายามชุดต่างๆด้วย\
และ" "
แต่ไม่มีอะไรทำงาน
ฉันต้องการเพิ่มสิ่งนี้
#this
##is my
text
ก่อนที่จะสาย
the specific line
ฉันลองสิ่งนี้
sed -i '/the specific line/i \
#this
##is my
text
' text.txt
แต่เพิ่มเฉพาะใน 'ข้อความ'
ฉันยังพยายามชุดต่างๆด้วย\
และ" "
แต่ไม่มีอะไรทำงาน
คำตอบ:
ด้วยการขึ้นบรรทัดใหม่:
% sed -i '/the specific line/i #this\n##is my\ntext' foo
% cat foo
#this
##is my
text
the specific line
คุณไม่มีเครื่องหมายแบ็กสแลชต่อท้ายที่จุดสิ้นสุดของบางบรรทัด (และคุณมีบรรทัดใหม่ที่มีประสิทธิภาพที่ท้ายบรรทัดสุดท้ายที่คุณต้องการแทรก):
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
เมื่อสตริงการแทนที่มีบรรทัดใหม่และช่องว่างคุณสามารถใช้อย่างอื่น เราจะพยายามแทรกเอาท์พุทของ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