ローカルで開発しているVisual Studioのプロジェクトがあります。コードファイルをリモートサーバーにデプロイする必要があります。唯一の問題は、コードファイルに含まれるURLがハードコードされていることです。
プロジェクトには、?page=oneのようなURLが含まれています。サーバー上でリンクを有効にするには、 /page/one とする必要があります。
配置する前にコードファイル内のすべてのURLをsedで置き換えることにしたのですが、スラッシュで困っています。
これはきれいな解決策ではないことはわかっていますが、シンプルであれば、私の時間を大幅に節約できます。置換しなければならない文字列の総数は10以下です。チェックしなければならないファイルの総数は約30個です。
私の状況を表す例を以下に示します。
使用しているコマンド
sed -f replace.txt < a.txt > b.txt
replace.txtにはすべての文字列が含まれています。
s/?page=one&/pageone/g
s/?page=two&/pagetwo/g
s/?page=three&/pagethree/g
a.txtを参照してください。
?page=one&
?page=two&
?page=three&
sedコマンドを実行した後のb.txtの内容です。
pageone
pagetwo
pagethree
私がb.txtに入れたいもの。
/page/one
/page/two
/page/three
最も簡単な方法は、検索/置換行で異なるデリミターを使用することです。
s:?page=one&:pageone:g
どちらの文字列にも属さない任意の文字をデリミタとして使用できます。また、バックスラッシュでエスケープすることもできます。
s/\//foo/
とすれば、/
をfoo
に置き換えることができます。置換文字列にどのような文字が含まれるかわからない場合(シェル変数の場合など)には、エスケープされたバックスラッシュを使用したいと思います。