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
1
je zkratka pro{print}
, takže se vytisknou všechny řádky v souboru- Když se vzor shoduje, nastavte
c
do 4 - když
c
dosáhne 1 (takžec
je true a!--c
je 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?