功能
再怎么高级的使用,都是为了满足需求,这里我们设置来说一个常见的需求
如果我想往我的代码里添加一些代码(随意代码,垃圾代码)
垃圾代码需要添加到方法体里, 如objective-c的:
- (void) lickMyBalls:(NSString*)balls with:(id)tongue
{
// ....代码
}
首先我是得匹配到方法, 再在方法的{}括号里添加, 而不是见到{}括号就添加, for循环也有括号呢。
这里有一个可以用sed
的多行匹配, 也可以用b
(branch control
)流程控制来完成;
因为这里讲b的使用, 所有我们就用b
来实现这个功能
代码
# 匹配方法
sed -i '/^- \(.*\)/{
# 设下标签
:tag1;
# 将下一行加到pattern space上,以\n连接
N;
# 如果此时pattern space不是以{符号结尾,回到:tag1标签处继续流程,像是goto :tag1
/{$/!b tag1;
# 到这里说明已经有{符号了,在{的下面添加上injected_content
a '"$injected_content"'
}' ${file}
injected_content
就是添加的内容; file
是被操作的文件;
这就是一个简单的b
的使用的例子
网友评论