0
我可以插入文本函數名&開盤剛過文本操作/ sed的
如括號:使用
void func()
{
Some text needs to be inserted before me
}
O/P
void func()
{
Hello here I am...
Some text needs to be inserted before me
}
的awk/sed的?
我可以插入文本函數名&開盤剛過文本操作/ sed的
如括號:使用
void func()
{
Some text needs to be inserted before me
}
O/P
void func()
{
Hello here I am...
Some text needs to be inserted before me
}
的awk/sed的?
這可能爲你工作(GNU SED):
sed '/^void func()/!b;n;a\Hello here I am...' file
這撈出,如果它不會對func
名稱相匹配。匹配後打印該行,讀取下一行並將所需的字符串追加到將在{
後面打印的字符串中。
同樣可以通過以下方式實現:
sed -e '/^void func()/{n;a\Hello here I am...' -e '}' file
sed的是個人行簡單的取代,任何事情你應該用AWK更有趣。例如,使用GNU AWK多字符RS,注意腳本是如何工作的,無論這些常見的功能定義佈局的可能性:
$ cat file
void func()
{
Some text needs to be inserted before me
}
void
func()
{
Some text needs to be inserted before me
}
void func() {
Some text needs to be inserted before me
}
。
$ awk -v RS='^$' -v ORS= '{gsub(/void\s+func\(\)\s*{/,"&\nHello here I am...")}1' file
void func()
{
Hello here I am...
Some text needs to be inserted before me
}
void
func()
{
Hello here I am...
Some text needs to be inserted before me
}
void func() {
Hello here I am...
Some text needs to be inserted before me
}
感謝波東...這是工作,但到底是什麼!「B」和「{N」是指 –
,你可以解釋如何在第二個解決方案工作 –
@Soumyadutta:命令'/.../ !b'表示不匹配中斷,因爲沒有提供標籤,默認值將退出當前行的任何後續命令,因此讀取下一行並從sed命令的開始處開始。 '{...}'結構只是將包含在地址匹配中的命令分組,即'/^void func()/'。由於append命令需要一個換行符來終止它,所以關閉'}'需要在一個單獨的'-e'命令中。 – potong