• ベストアンサー

sedコマンドをシェルで実行でうまくいかない

sedコマンドをシェルで実行しようとしています。 sedコマンドの引数がシングルクォートのためうまく出来ずに困っています。 テキスト内の /abc を xxx と変えたいとします。 以下のように作ってみました。 #!/bin/sh a='\/abc' b=xxx sed \'$a/$b\' txt しかし 認識できないコマンドです: '\/abc/xxx' というエラーが出ます。 $aで扱いたい変数は実はもっと長いパスの為、 ぜひ変数を使いたいのですが、うまくやる方法は無いでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
  • ham_kamo
  • ベストアンサー率55% (659/1197)
回答No.1

sed の引数は別にシングルクォートでなくても、ダブルクォートでもいいはずです。 そして、コマンドの区切りは/でなくて他の文字でもよいことになっています。 なので、ダブルクォーテーションでコマンドを記述し、さらに区切りを/以外の文字にすれば、\/とエスケープする必要はなくなり、以下のように書けます。 #!/bin/sh a='/abc' b=xxx sed "s#$a#$b#" txt

azicyan
質問者

お礼

大変申し訳ありませんでした。 記述を間違えていたらしく、 すぐに”でやってみたところあっさり出来てしまいました。 大変失礼いたしました。

関連するQ&A