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