【发布时间】:2021-11-01 13:39:06
【问题描述】:
我正在使用这个 grep 来从我的日志文件中提取“SQL”语句:
grep -oPzZ ' SQL "\K[^"]+' log.log
之后,我需要在每个检测到的sql语句的末尾添加;来格式化它:
grep -oPzZ ' SQL "\K[^"]+' log.log | sed -E '$s/$/\n/; s/\x0/;/; s/^[[:blank:]]+//'
尽管如此,它似乎根本不起作用。我的意思是,我得到了:
alter table HFJ_RES_LINK modify ( SRC_PATH varchar2(200) );create index IDX_VALUESET_EXP_STATUS on TRM_VALUESET(EXPANSION_STATUS)drop index IDX_VALUESET_EXP_STATUS
如您所见,在第一个检测到的sql语句之后添加了第一个;,之后没有添加。
log.log 类似于:
3_6_0.20180929.1: SQL "alter table HFJ_RES_LINK modify ( SRC_PATH varchar2(200) )" returned 0
4_0_0.20190722.37: SQL "create index IDX_VALUESET_EXP_STATUS on TRM_VALUESET(EXPANSION_STATUS)" returned 0
有什么想法吗?
【问题讨论】:
-
试试
sed -E 's/\x00/;\n/g; s/^[[:blank:]]+//',它should work。
标签: sed