我有一大块C代码,中间是一个我想用宏注释掉的函数
...
...
xyzFunction(){ ... ..
}
...
应该成为
#ifndef COMMENT_OUT
xyzFunction(){ ... .. 。 } #万一 ..
我可以使用以下sed命令添加#ifndef
COMMENT OUT
sed '/xyzFunction/ i #ifndef COMMENT_OUT' file1.c > opt;mv opt file1.c
但是我怎样才能找到关闭这个函数的匹配花括号,以便我可以在它之后放一个#endif?
答案 0 :(得分:0)
试试这个。
sed 's/^\(xyzFunction (){\)$/#ifndef COMMENT_OUT\n\1/; s/}$/}\n#endif/' file name
或试试这个,
sed 's/\(.*(.*){\)/#ifndef COMMENT_OUT\n\1/; s/}$/}\n#endif/' file name
答案 1 :(得分:-1)
使用此sed
命令
sed '/xyzFunction (){/s/.*/#ifndef COMMENT_OUT\n&/;/}/s/.*/&\n#endif/'
或
sed '/runTaskCode(.*)/s/.*/#ifndef COMMENT_OUT\n&/;/}/s/.*/&\n#endif/'
说明:
首先匹配函数名称/runTaskCode(.*)/
,如果函数名称已匹配,则将您的字符串放在上一行中,如s/.*/#ifndef COMMENT_OUT\n&/
。然后匹配结束大括号,如果匹配则将匹配行后的字符串放入/}/s/.*/&\n#endif/