sed :忽略以空格开头的行以进行匹配

sed :忽略以空格开头的行以进行匹配

我想将 httpd 的默认侦听端口替换为 9090。我可以使用以下命令编辑 httpd.conf 文件中的行

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

但线

Listen 80

前面可能有空格。

如何忽略这个空白来匹配这一行?

答案1

通过以下方式更改您的匹配模式,在列表之前不捕获空格:

/^\s*Listen/

这将包括所有

Listen ..
    Listen ...

和别的。

答案2

只需允许正则表达式也匹配空格即可。您可以使用字符组[ \t](与空格或制表符匹配)或等效的 POSIX 括号表达式 [:blank:]

因此,/^Listen/变为/^[[:blank:]]*Listen/. (请注意,括号表达式实际上是用双方括号对编写的。)

相关内容