• ベストアンサー

sedでファイルで条件指定の場合

スクリプト初心者です。 sedコマンドを使用して文字列の置換をおこないたいのですが、条件がたくさんあるため、 条件部分をシェルのファイルと別ファイルにして実行したいです。 その際、シェル実行時の引数を条件ファイルに入れたいのですが、通常の文字列扱いになってしまい困っています。 アドバイスをお願いいたします。 ・test.sh  find $1 -type f | xargs sed -i -f mypattern.sed ・mypattern.sed  s|${1}aaa|/bbb|g test.sh hoge と実行した場合 "hogeaaa" を "bbb" に置換したいです。

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

  • ベストアンサー
  • cflush4
  • ベストアンサー率100% (1/1)
回答No.2

mypattern.sedをsedで置換すれば良いのでは。 ・mypattern.sed s|XXXXXaaa|bbb|g ・test.sh  sed "s|XXXXX|$1|g" mypattern.sed > temp.sed  find $1 -type f | xargs sed -i -f temp.sed

komegu66
質問者

お礼

ありがとうございます。 無事に解決しました。 他にもわからない所が出てきたので、また質問させていただきますのでよろしくお願いいたします。

その他の回答 (1)

  • notnot
  • ベストアンサー率47% (4900/10359)
回答No.1

スクリプトをコマンドラインでなく(あらかじめ作った)別ファイルに書きたい と シェルファイルの引数をスクリプト中で使いたい は矛盾するので、どちらかをあきらめる必要があります。 どうしてもやるなら、 echo "s|${1}aaa|/bbb|g" > mypattern.sed find $1 -type f | xargs sed -i -f mypattern.sed ということになりますが、それは「スクリプトをコマンドラインでなく別ファイルに書きたい」とあなたが思った目的にかないますか? 単に、 find $1 -type f | xargs sed -i "s|${1}aaa|/bbb|g" と書くのと大差ないと思いますが。

komegu66
質問者

お礼

ありがとうございました。 シェルは奥が深いですね。

関連するQ&A

専門家に質問してみよう