美文网首页
sed高级篇: 流程控制-(b和t的使用)

sed高级篇: 流程控制-(b和t的使用)

作者: ape_caesar | 来源:发表于2019-01-10 18:33 被阅读0次

功能

再怎么高级的使用,都是为了满足需求,这里我们设置来说一个常见的需求

如果我想往我的代码里添加一些代码(随意代码,垃圾代码)

垃圾代码需要添加到方法体里, 如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的使用的例子

相关文章

网友评论

      本文标题:sed高级篇: 流程控制-(b和t的使用)

      本文链接:https://www.haomeiwen.com/subject/sctzrqtx.html