• 締切済み

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

みんなの回答

  • kumoz
  • ベストアンサー率64% (120/185)
回答No.2

私自身も別の Linux を使用していますが、質問のソフトは使っていませんので具体的なことはお答えできません。Linux ですので、設定ファイルなどで書き出し用の改行コードを設定できるようになっていると思うのですが....。

tasketeqq1
質問者

補足

そうですか、残念です...

  • kumoz
  • ベストアンサー率64% (120/185)
回答No.1

どのような処理をしているのかはわからないのですが、一般的に ^M は CR (復帰) を意味します。考えられるのは、実行前の改行が LF のみであったものが、処理後に CR+LF に変更されてしまっているものと思います。

tasketeqq1
質問者

補足

ありがとうございます。 ^M は CR (復帰) だったんですね、仰るとおりの動作のようです。 意味は分かったのですが、さてどうすれば解消するのか、さっぱり分かりません。 やってることは「該当する文字列を置き換える」という処理なんです。 置き換えはうまく行えてるんですが、対象外の行末に^Mが付いてしまうんですよね。

関連するQ&A