web-dev-qa-db-ja.com

sed:一致する行の開始空白を無視

Httpdのデフォルトのリスニングポートを9090に置き換えたい。以下を使用してhttpd.confファイルの行を編集できます。

sed -i "/^Listen/c\Listen 9090" /etc/httpd/conf/httpd.conf

しかし、行

Listen 80

その前に空白がある場合があります。

この空白を無視してこの行に一致させるにはどうすればよいですか?

6
user1263746

次の方法で、listeの前に一致するパターンをキャッチしない空白を変更します。

/^\s*Listen/

それはすべて含まれます

Listen ..
    Listen ...

その他。

5
rush

正規表現が空白文字にも一致するようにします。文字グループ[ \t](スペースまたはタブ文字に一致)または 同等のPOSIXブラケット式[:blank:]を使用できます。

したがって、/^Listen//^[[:blank:]]*Listen/になります。 (ブラケット式は、二重の角括弧ペアで効果的に記述されていることに注意してください。)

6
a CVn