sed
GNUと同様にBSDと互換性を持ちたいsedの代替コマンドがありますsed
。この場合、拡張正規表現は必要ないため、拡張正規表現は問題になりません。私の主な問題は、2つsed
のsが置換文字列の文字エスケープシーケンスを解釈する方法の違いです。私の置換文字列にはタブと改行が含まれており、メンテナンスを容易にするためにコマンド文字列に表示したいのですが、BSD sed
はエスケープシーケンスを解釈せず、GNU sed
はそうします。sed
BSDでこれらのエスケープシーケンスを解釈するように指示する適切な方法は何ですか?次の2つのスニペットは、私の問題を要約しています。
GNU sed
echo ABC | sed 's/B/\n\tB\n'
eil
A
B
C
BSD sed
echo ABC | sed 's/B\n\tB\n'
利回り
AntBnC
明らかに、\n
そして\t
BSDによってエスケープシーケンスとして解釈されていませんsed
さて、私の質問に。BSD sed
マンページによると:
置換文字列に改行文字を指定するには、その前にバックスラッシュを付けます。
これは、リテラルの改行の前にバックスラッシュを付ける必要があることを意味していますか?置換テキストのsed
よう\n
にエスケープシーケンスを解釈するよう指示する適切な方法は何ですか?
sed
。最終的には、awkを使用するのが理にかなっているでしょう。それで、私が引用したBSD sedマンページの解釈についてどう思いますか?