【发布时间】:2016-07-13 01:14:03
【问题描述】:
我正在尝试编写一个简单的脚本,它将查找目录中的所有 java 文件并显示与某个搜索字符串匹配的所有日志消息。例如,如果 java 文件中的一行包含“log.info”,我想将它粘贴到文件中。 “错误”、“警告”和“调试”也是如此。现在这就是我所拥有的:
grep -rn --include \*.java "\b\.error\b" * >> log_strings.csv
然后我手动将“.error”替换为其他字符串之一。但是,当我稍后尝试分隔输出时,grep 在字段之间添加冒号“:”字符,并且一些日志消息还包含“:”字符,因此我的输出变得混乱。我最终得到:
filename:line_num:log.debug("some message:"+whatever());
大致翻译为:
filename **TAB** line_num **TAB** log.debug("some message **TAB** "+whatever());
有没有办法替换 grep 产生的“:”字符,但忽略字符串中的那个,以便我的 java 字符串保持井井有条?我想一定有一些事情可以使用 sed 或 awk 来完成。
【问题讨论】: