Bash変数のパスをsed式に拡張する

Bash変数のパスをsed式に拡張する

この行に問題があるかどうか尋ねたいです。

sed -i "/$PWD/a\ Hello World" historia.txt

私がこれを入れたら、もちろん変数を拡張せずに動作することを''除いてください。""

答え1

問題は、パスに文字が含まれていて、代替パラメータの分離にも/その文字を使用していることです。最も簡単な回避策は、データに表示されない他の区切り文字(たとえば、次の例のように、またはカンマ)をsed使用することです。sed|

sed -i "s,${PWD},a Hello World," historia.txt

編集:上記はあなたが経験している問題(スラッシュ衝突)について説明しています。しかし、私は(今)あなたが変更するのではなく、一致する行の後に行を追加するのを見ています。この場合、PWDパスからスラッシュをエスケープできますsed。たとえば、次のようになります。

sed -i "/${PWD//\//\\/}/a Hello World" historia.txt

関連情報