如何讓這個 SED 指令更便攜?

如何讓這個 SED 指令更便攜?

我正在使用以下sed命令:

cat version | sed -e 's/[0-9][0-9][0-9][0-9][0-9:M]*-[abp]/Ver\n/'

標準化如下:

4330M-p  ->  Ver<newline>

這對於 GNU SED 工作得很好,但是對於 Mac OS X 上的 BSD SED,\n 變成n這樣:

4330M-p  ->  Vern

將包含隨時間變化的版本號的某些輸出規範化為靜態字串,後面跟著換行符。這用作測試的一部分,其中sed處理後的輸出與已知的黃金文件進行比較diff,我們不希望由於版本號更改而失敗,並且還需要出於我們的目的添加換行符。

我怎麼能用一個在 GNU 和 BSD 版本上都有效的方式替換一個添加換行符的字串sed,或者我應該sed在 Mac OS X 上安裝 GNU 因為這是不可能的?

答案1

您可以在腳本中建立一個文字換行符,如下所示:

cat version | sed -e 's/[0-9][0-9][0-9][0-9][0-9:M]*-[abp]/Ver\
/'

相關內容