Ubuntu 14の変数ワードのSed正規表現

Ubuntu 14の変数ワードのSed正規表現

次の文字列を含むファイルが提供されます。

fastcgi_param WP_ENV staging;

「staging」という単語を新しい文字列に置き換えるには、sed式が必要です。

fastcgi_param WP_ENV production;

最初の例では、3番目の単語は変更可能です。開発、ローカルなどの小文字の文字列にすることができます。

私は以下を試しました:

sed  's/fastcgi_param WP_ENV [\w+]/fastcgi_param WP_ENV production/g' 

しかし、それをうまくやっていません。この単語の正規表現が一致しません。

これらの置換を実行する正しいsedコマンドは何ですか?

ベストアンサー1

-E角かっこの追加と削除:

$ sed -E 's/fastcgi_param WP_ENV \w+/fastcgi_param WP_ENV production/g' file
fastcgi_param WP_ENV production;

メモ:

  1. +デフォルトの正規表現はサポートされていません。 -E拡張正規表現のサポートを有効にします+

  2. \w+1 つ以上の単語文字と一致します。[\w+]、またはいずれかと一致します。\w+

  3. \w持ち運びが簡単ではありません。 POSIX 互換性のためには、以下を使用してください。

    $ sed -E 's/fastcgi_param WP_ENV [[:alnum:]]+/fastcgi_param WP_ENV production/g' file
    fastcgi_param WP_ENV production;
    
  4. 行を2回入力したくない場合は、キャプチャグループを使用できます。

    $ sed -E 's/(fastcgi_param WP_ENV) [[:alnum:]]+/\1 production/g' file
    fastcgi_param WP_ENV production;
    

おすすめ記事