sed '/function_1(/,/^[[:space:]]*}/ {
,/^[[:space:]]*}/ a\
Line that\
you want to\
insert (append) here
}' YourFile
- vložte řádek za
}(samotný v řádku s případnou mezerou před) ze sekce začínajícífunction_1( - Předpokládám, že neexistuje žádný
}sám ve vašem interním kódu jako ve vašem vzorku
buďte opatrní při výběru na základě názvu funkce, protože by mohl být použit (a normálně je) jako volání samotné funkce v jiné sekci kódu, takže možná /^void function_1()$/ je lepší
Nepočítat, odpovídat:
sed -e '/^void function_1()/,/^}$/ { /^}$/a\
TEXT TO INSERT
}' input
Tím se podívá na blok mezi deklarací a uzavírací složenou závorkou a poté za uzavírací složenou závorku přidá TEXT_TO_INSERT.
Použijte awk:
awk '1;/function_1/{c=4}c&&!--c{print "new text"}' file
1je zkratka pro{print}, takže se vytisknou všechny řádky v souboru- Když se vzor shoduje, nastavte
cdo 4 - když
cdosáhne 1 (takžecje true a!--cje true), vložte řádek
Stačí použít !--c ale přidání kontroly na c být pravdivý také znamená, že c neklesá nad 0.
Zkuste to s GNU sed:
sed "/function_1/{N;N;N;a new_text
}" filename
Jak restartovat vzdálený server MySQL běžící na Ubuntu linux?
Používáte prctl PR_SET_NAME k nastavení názvu procesu nebo vlákna?