ich den folgenden Inhalt haben:sed - Einsatzleitung nach X Linien nach Spiel
void function_1()
{
//something (taking only 1 line)
}
->INSERT LINE HERE<-
//more code
Mit sed, möchte ich Zeile an der INSERT LINE einfügen HIER Label. Der einfachste Weg, sollte sein:
- find text "function_1"
- 3 Zeilen überspringen
- Einsatz neue Linie
Aber keines der bekannten sed Optionen die Arbeit machen.
sed '/function_1/,3a new_text
Einsätze neuer_text ersetzt direkt nach 'function_1'
sed '/function_1/,+3a new_text
Einsätze Neuer_Text nach jedem der nächsten drei Zeilen nach 'function_1'
sed '/function_1/N;N;N; a new_text
Einsätze neuer_text ersetzt an mehreren Stellen, nicht verwandten zum Muster
Danke.
Alternativ: 'sed '/ function_1 /! {P; d;}; n; n; n; ein neuer Text'' Es ist mehr umständlich, funktioniert aber ohne Zeilenumbruch im sed-Code (weil der Befehl' a' ist Am Ende). – Wintermute
Ich denke, dass dieser Ansatz nicht auf allen Versionen von sed funktioniert, da POSIX angibt, dass Sie 'a \' gefolgt von einem Newline verwenden sollten, um Text anzuhängen. –