#!/bin/sh
if [ $# -ne 2 ];then
echo “Usage: $0 classname file”
exit
fi
function_name=$1
file=$2
logs=’LOG(INFO)<<“xxxxx: “<<__FUNCTION__’;
if [ $# -ge 3 ];then
echo “delete logs: $3…”
sed -i “/$logs/d” $file
exit
fi
sed -i “s/\($function_name::.*) *{$\)/\1\n$logs/g” $file
sed -i “/$function_name::.*[^{]$/,/) *{/s/) *{/&\n$logs/g” $file
解释以下最后两行: 主要以类名::和) { 来区分是否是一个类的成员函数. &表示前面匹配的内容. 也可以用下面6的插入命令实现
第一个sed替换例子为:
MediaPlayerBridge::Start() { // 函数名及参数在一行
第二个sed替换的例子是:
MediaPlayerBridge::onMediaError(
JNIEnv* /* env */, jobject /* obj */, jint error_type) { // 函数名及参数在多行
sed常用功能介绍(包含多行匹配及替换)
1. sed 参数
-i 表示inplace edit,就地修改文件 -r 表示搜索子目录
2.
删除:d命令