- ベストアンサー
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" に置換したいです。
- みんなの回答 (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
その他の回答 (1)
- notnot
- ベストアンサー率47% (4900/10359)
スクリプトをコマンドラインでなく(あらかじめ作った)別ファイルに書きたい と シェルファイルの引数をスクリプト中で使いたい は矛盾するので、どちらかをあきらめる必要があります。 どうしてもやるなら、 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" と書くのと大差ないと思いますが。
お礼
ありがとうございました。 シェルは奥が深いですね。
お礼
ありがとうございます。 無事に解決しました。 他にもわからない所が出てきたので、また質問させていただきますのでよろしくお願いいたします。