- ベストアンサー
sedコマンドをシェルで実行でうまくいかない
sedコマンドをシェルで実行しようとしています。 sedコマンドの引数がシングルクォートのためうまく出来ずに困っています。 テキスト内の /abc を xxx と変えたいとします。 以下のように作ってみました。 #!/bin/sh a='\/abc' b=xxx sed \'$a/$b\' txt しかし 認識できないコマンドです: '\/abc/xxx' というエラーが出ます。 $aで扱いたい変数は実はもっと長いパスの為、 ぜひ変数を使いたいのですが、うまくやる方法は無いでしょうか。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
sed の引数は別にシングルクォートでなくても、ダブルクォートでもいいはずです。 そして、コマンドの区切りは/でなくて他の文字でもよいことになっています。 なので、ダブルクォーテーションでコマンドを記述し、さらに区切りを/以外の文字にすれば、\/とエスケープする必要はなくなり、以下のように書けます。 #!/bin/sh a='/abc' b=xxx sed "s#$a#$b#" txt
お礼
大変申し訳ありませんでした。 記述を間違えていたらしく、 すぐに”でやってみたところあっさり出来てしまいました。 大変失礼いたしました。