sedで複数行を挿入する方法


10

これを追加したい

#this 
##is my 
text

行の前

the specific line 

私はこれを試しました

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

ただし、「テキスト」のみが追加されます。

私はまたして様々な組み合わせを試してみました\し、" "何も働きました。

回答:


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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.