sed '/function_1(/,/^[[:space:]]*}/ {
,/^[[:space:]]*}/ a\
Line that\
you want to\
insert (append) here
}' YourFile
}
の後に次の行を挿入しますfunction_1(
で始まるセクションから (最終的には前にいくつかのスペースがある行に単独で)}
はないと思います サンプルのように内部コードで単独
関数名に基づく選択には注意してください。これは、他のコード セクションで関数自体の呼び出しとして使用される可能性があるため (通常は使用されます)、おそらく /^void function_1()$/
良い
数えないで、マッチしてください:
sed -e '/^void function_1()/,/^}$/ { /^}$/a\
TEXT TO INSERT
}' input
これは、宣言と右中括弧の間のブロックを調べ、右中括弧の後に TEXT_TO_INSERT を追加します。
awk を使用:
awk '1;/function_1/{c=4}c&&!--c{print "new text"}' file
1
{print}
の短縮形です 、したがって、ファイル内のすべての行が印刷されます- パターンが一致した場合、
c
を設定します 4まで c
のとき 1 に達する (だからc
真であり、!--c
true)、行を挿入
!--c
を使用できます c
のチェックを追加します true は c
も意味します 0 を超えて減少し続けることはありません。
GNU sed でこれを試してください:
sed "/function_1/{N;N;N;a new_text
}" filename