sed '/function_1(/,/^[[:space:]]*}/ {
,/^[[:space:]]*}/ a\
Line that\
you want to\
insert (append) here
}' YourFile
- inserisci la riga dopo il
}
(solo nella riga con eventualmente uno spazio prima) dalla sezione che inizia confunction_1(
- Presumo che non ci sia
}
solo nel tuo codice interno come nel tuo campione
fai attenzione alla selezione in base al nome della funzione perché potrebbe essere usato (e normalmente lo è) come chiamata alla funzione stessa in un'altra sezione di codice quindi forse un /^void function_1()$/
è meglio
Non contare, abbina:
sed -e '/^void function_1()/,/^}$/ { /^}$/a\
TEXT TO INSERT
}' input
Questo esamina il blocco tra la dichiarazione e la parentesi graffa di chiusura, quindi aggiunge TEXT_TO_INSERT dopo la parentesi graffa di chiusura.
Usa awk:
awk '1;/function_1/{c=4}c&&!--c{print "new text"}' file
1
è una scorciatoia per{print}
, quindi vengono stampate tutte le righe del file- quando il modello è abbinato, imposta
c
a 4 - quando
c
raggiunge 1 (quindic
è vero e!--c
è vero), inserire la riga
Potresti semplicemente usare !--c
ma aggiungendo il segno di spunta per c
essere vero significa anche che c
non continua a diminuire oltre 0.
Prova questo con GNU sed:
sed "/function_1/{N;N;N;a new_text
}" filename