この 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 版の両方で機能する方法で改行を追加する文字列に置き換えるにはどうすればよいですか。それとも、これはできないので Mac OS X にsedGNU をインストールするだけでよいのでしょうか。sed

答え1

次のように、スクリプト内でリテラルな改行を作成できます。

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

関連情報