[英]Comment out multiline log statements using perl one liner regex substitution
我有一個perl單行代碼,當日志語句在一行上時可以使用:
find -type f -iname "*java" | xargs -d'\n' -n 1 perl -i -pe 's{(log.*((info)|(debug)).*)}{//$1}gi'
但是嘗試修改它以在多行上工作很棘手。 我知道s
修飾符將與換行符匹配,但是如何獲取它以注釋掉后續行(即最多;
假設日志字符串沒有它)?
我也可以將多行日志語句也變成單行日志語句的解決方案很好。 我還將接受C風格的注釋(盡管很高興找到C ++風格的注釋的解決方案)。
(不要告訴我關閉日志記錄。任何實際嘗試過的人都會意識到非平凡應用程序的殘酷程度。)
只是一個一般性想法(請適應您的情況...)
...perl -i -p0e 's{(log.*?((info)|(debug)).*?;)}{ $1 =~ s!^|\n!\n//!gr }gsei'
哪里:
.*?
代替.*
以表現不貪心 -p0e
將全文作為單個記錄處理 $1 =~ s!^|\\n!\\n//!gr
對內部換行符進行額外處理 請在應用之前對其進行測試...
您可以使用范圍運算符 , start .. stop
:
perl -i -pe 's!^!//! if /log.*(info|debug)/ .. /;/'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.