首页 > 解决方案 > 用 sed 替换 log4j 转换模式

问题描述

每当实际包含的文本需要替换为 sed 中的文本输出时,我都会尝试替换。它对我不起作用。

实际文字:

%d{ConversionPattern} %-5p [%c{1}] %m%n

我需要的文本输出

%d{ConversionPattern} %-5p [%c{1}] [%t] - %X{Sample} - %m%n

命令 :

sed -i "/<param name=\"ConversionPattern\" value=\"%d{ConversionPattern} %-5p [%c{1}] %m%n\"\/>/s@@<param name=\"ConversionPattern\" value=\"%d{ConversionPattern} %-5p [%c{1}] [%t] - %X{Sample} - %m%n\"\/>@"

标签: linuxshellawksed

解决方案


使用您显示的示例,请尝试以下操作。

sed -E 's/(.*\])[[:space:]]++(.*)$/\1 [%t] - %X{Sample} - \2/' Input_file

说明:使用sed's 的替换功能并替换从开始到直到的所有内容]并将其保留在第一个反向引用中,然后将其之后的所有内容保留到第二个反向引用中。在将其替换为- %X{Sample} -在 2 个反向引用值之间提及以插入新文本时。

注意:上面的代码将在终端上打印输出,一旦您对上面的结果感到满意,那么您可以运行上面的命令并sed -i选择执行就地保存。


推荐阅读