awk 中可以保留记录分隔符吗?

awk 中可以保留记录分隔符吗?

我想按第一个单词(例如调试或信息)分隔记录并保留 RS。

但执行程序时,awk 删除了 RS。

怎么保存呢?

日志.txt 是

DEBUG:[2018-04-09 13:00:01]
=========================
START LOG 
:
:
END LOG 
===========================

DEBUG:[2018-04-09 13:00:02]
 INFO:[2018-04-09 13:00:03]
DEBUG:[2018-04-09 13:00:04]
=========================
START LOG 
:
:
END LOG 
===========================

我的尝试计划是

$gawk 'BEGIN{RS="(DEBUG|INFO)"; FS="\n"}{print RS$0}' log.txt

但它表明

(DEBUG|INFO):[2018-04-09 13:00:01]
=========================
START LOG 
:
:
END LOG 
===========================

(DEBUG|INFO):[2018-04-09 13:00:02]
(DEBUG|INFO):[2018-04-09 13:00:03]
(DEBUG|INFO):[2018-04-09 13:00:04]
=========================
START LOG 
:
:
END LOG 
===========================

答案1

您可以使用RT

gawk 'BEGIN{RS="(DEBUG|INFO)"; FS="\n"}{printf "%s%s", $0, RT}' log.txt

相关内容