- 締切済み
chef-solo?、正規表現? 分からない
file '/var/www/html/wp-config.php' do _file = Chef::Util::FileEdit.new(path) _file.search_file_replace_line(/define\(\'DB_NAME\'.*/, "define('DB_NAME', 'WP_DB01');") _file.write_file end 上記のようにchefsoloを実行すると、結果が下記のようになります。 置換したい箇所(3行目)はキッチリと置換されているのですが、各行の行末に(^M)なんて余計なものが付いてしまいます。 chef-soloの問題なのか、正規表現の問題なのか、原因が分からず困っております。 どなたか教えてください。 環境はVPSで、OSはCentOS、chef-soloはChef:12.0.3です。 ----実行前----------------------- // ** MySQL 設定 - この情報はホスティング先から入手してください。 ** // /** WordPress のためのデータベース名 */ define('DB_NAME', 'database_name_here'); /** MySQL データベースのユーザー名 */ define('DB_USER', 'username_here'); ----実行後----------------------- // ** MySQL 設定 - この情報はホスティング先から入手してください。 ** //^M /** WordPress のためのデータベース名 */^M define('DB_NAME', 'WP_DB01'); ^M /** MySQL データベースのユーザー名 */^M define('DB_USER', 'username_here');^M ^M
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- kumoz
- ベストアンサー率64% (120/185)
私自身も別の Linux を使用していますが、質問のソフトは使っていませんので具体的なことはお答えできません。Linux ですので、設定ファイルなどで書き出し用の改行コードを設定できるようになっていると思うのですが....。
- kumoz
- ベストアンサー率64% (120/185)
どのような処理をしているのかはわからないのですが、一般的に ^M は CR (復帰) を意味します。考えられるのは、実行前の改行が LF のみであったものが、処理後に CR+LF に変更されてしまっているものと思います。
補足
ありがとうございます。 ^M は CR (復帰) だったんですね、仰るとおりの動作のようです。 意味は分かったのですが、さてどうすれば解消するのか、さっぱり分かりません。 やってることは「該当する文字列を置き換える」という処理なんです。 置き換えはうまく行えてるんですが、対象外の行末に^Mが付いてしまうんですよね。
補足
そうですか、残念です...