これを追加したい
#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