Linux

是否可以在 awk 中保留記錄分隔符?

  • April 12, 2018

我想按第一個單詞(例如 DEBUG 或 INFO)分隔記錄並保留 RS。

但執行程序,awk 刪除 RS。

如何保持?

log.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 
===========================

您可以使用 RT

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

引用自:https://unix.stackexchange.com/questions/437209