エスケープ文字を含む sed 式を構成する方法

エスケープ文字を含む sed 式を構成する方法

sed式(およびArchLinuxのGNU sed 4.2.2)が提供されます。

/match/i\tline1\n\tline2

一致の上にタブにインデントされた2行を挿入する必要があります。最初の文字(例では\t)のエスケープは無視されますが、他のエスケープ文字はすべて正しく処理されることがわかりました。

次のようにテストしてください。

echo match | sed -e '/match/i\tline1\n\tline2'

明らかにする

tline1
    line2
match

初期エスケープ文字(タブや改行など)に関係なく、結果は同じです。最初の文字が正しく処理されるように式を構成する正しい方法は何ですか?

ベストアンサー1

Gnu sedのマニュアルを確認してください(http://www.gnu.org/software/sed/manual/html_node/Other-Commands.html#Other-Commands) -iコマンドは実際にはi\コマンドなので、追加のバックスラッシュだけが必要です。

echo match | sed -e '/match/i\\tline1\n\tline2'
# ---------------------------^

おすすめ記事