![5ef15d13dd33792ba07514ccf36c659c.png](https://i-blog.csdnimg.cn/blog_migrate/86753fbabdd0b0df2534669e987076c2.jpeg)
一. 需求
源码中存在大量类似于 LOG_INFO("Operation success, result:%sn", result);
的 log 输出信息。由于使用了 log4cplus
,并且 log4cplus
会在每条 log 信息后自动加入 n
,这就导致 log 文件中存在大量的空行。因此需要将 LOG_INFO(...)
中的 n
去掉,保持 log 文件内容的紧凑性。
首先考虑使用 source insight 中的全工程内容替换功能,但是最简单的字符串替换无法满足要求。因此考虑使用正则表达式(Regular Expression)进行替换。
二. 简介
source insight 的正则表达式非常简单易用,在 source insight 的帮助文档中有对正则表达式的说明。Home --> Features and Concepts --> Regular Expressions
。
三. 说明
![9e6966e0cee401866ba97be3c8c04766.png](https://i-blog.csdnimg.cn/blog_migrate/892f7a08ecf1e991a010cad47a1866c8.jpeg)
四. 解决
使用 log4cplus 输出 log 信息时,会用到 LOG_DEBUG, LOG_INFO, LOG_WARN, LOG_ERR
,并且 log 的内容也不确定,有长有短,唯一确定的是内容中包含一个n
,因此使用如下命令进行替换:
Old:(LOG_[DIWE].*)(n)(.*)
New:13
举例说明:
原始信息:LOG_INFO("Operation success, result:%sn", result);
替换后信息:LOG_INFO("Operation success, result:%s", result);
正则表达式 (LOG_[DIWE].*)(n)(.*)
将 LOG_INFO("Operation success, result:%sn", result);
分为 3 部分:
1
:LOG_INFO("Operation success, result:%s
2
:n
3
:", result);
替换时只需 13
即可。