sed insert: 挿入された文字列の先行スペースを保持します。

sed insert: 挿入された文字列の先行スペースを保持します。

diffファイルの特定の行に挿入したい先行スペース(ファイルの結果から抽出)を持つ変数があります。可変的な:

add="     public function add($hardware_id = null)"

ただし、次のように行を挿入すると、先行sedスペースは印刷されません。

$ sed "50i$add" file
...
public function add($hardware_id = null)
...

先行スペースを維持する方法は?

ベストアンサー1

変数を挿入するときに先行スペースを維持するには、単にエスケープしてください。一度\スペースの後にバックスラッシュが続きます。入れるコマンドはi次のとおりです。

$ sed '50i\'"$add" file
    public function add($hardware_id = null)

  1. 変数に限定されず、テキストを文字通り挿入すると同じ効果が得られます。

  2. これは、テキストを挿入する前にエスケープされたリテラル改行が必要なPOSIX指定の動作ではありません。

おすすめ記事