我已經有了一個bash腳本來封裝mvn(Apache Maven)來爲其輸出添加顏色。是做什麼的一個簡化版本是:如何在perl上進行無緩衝替換?
mvn "[email protected]" | sed -e "s/^\[INFO\] \-.*/$bldblu&$rst/g"
其中$bldblu
是大膽的藍色的ANSI顏色轉義字符,並$rst
重置顏色。
我遇到的問題是,有時mvn寫了一行不以換行符結束的行,因此(據我所知)sed一直在等待輸入,並且從不打印提示(這使得它看起來像Maven掛着)。我已經嘗試將-u
添加到sed,但這只是強制sed執行逐行緩衝而不是緩衝多行 - 對我沒有幫助。
到目前爲止,這是我想出來的:
mvn "[email protected]" | perl -pe "$| = 1; s/^(\[INFO\] \-.*)/$bldblu\$1$rst/g"
,但我覺得用-p
是不正確的位置。任何幫助?
是你看到具體的什麼問題? –
它不打印mvn的最後一行,因爲它沒有以換行符/回車符結束 –
我還沒有完全理解這個問題,但是如何嘗試/ gs或/ gsm或/ gm修飾符(而不是/ g)? – knb