Regex 正则表达式从C源文件中删除_P()宏
我想删除十几个C源文件中使用的宏_p(),例如:Regex 正则表达式从C源文件中删除_P()宏,regex,sed,Regex,Sed,我想删除十几个C源文件中使用的宏_p(),例如: char *x __P((char *, size_t, void *, size_t, int)); char *y __P((void *, const char *, int)); 我想使用正则表达式获得以下内容: char *x(char *, size_t, void *, size_t, int); char *y(void *, const char *, int); 我的问题是函数声明可能包含换
char *x __P((char *, size_t,
void *, size_t, int));
char *y __P((void *, const char *, int));
我想使用正则表达式获得以下内容:
char *x(char *, size_t,
void *, size_t, int);
char *y(void *, const char *, int);
我的问题是函数声明可能包含换行符,我想删除不必要的大括号
有人能解决我的问题吗?正则表达式:
(.*)p\(.*)代码>
要使用的标志:
g
用于全局搜索
s
以允许点匹配换行符
替换操作:\1\2代码>
Sed命令:Sed的/(.*)p\(.*)/\1\2;/gs的文件.c
sed似乎不理解s
作为模式标志,但perl确实:
perl -0777 -p -i -e 's/(.*?) __P\((.*?)\);/\1\2;/gs' file.c
不过,非常感谢noob提供了正确的正则表达式 非常感谢你的regex!我不知道s
。不幸的是,它在命令行中不起作用:sed:-e expression#1,char 29:unknown选项到
s'`