Rod*_*o M 2 sed regular-expression
给定一个具有以下字符串的文件:
fastcgi_param WP_ENV staging;
Run Code Online (Sandbox Code Playgroud)
我需要一个 sed 表达式,它将用一个新字符串替换单词 'staging':
fastcgi_param WP_ENV production;
Run Code Online (Sandbox Code Playgroud)
在第一个例子中,第三个字是可变的。它可以是任何小写字符串,例如 development、local 等。
我尝试了以下方法:
sed 's/fastcgi_param WP_ENV [\w+]/fastcgi_param WP_ENV production/g'
Run Code Online (Sandbox Code Playgroud)
但它没有正确地完成工作。该词的正则表达式不匹配。
执行此类替换的正确 sed 命令是什么?
添加-E
和删除方括号:
$ sed -E 's/fastcgi_param WP_ENV \w+/fastcgi_param WP_ENV production/g' file
fastcgi_param WP_ENV production;
Run Code Online (Sandbox Code Playgroud)
笔记:
+
基本正则表达式不支持。 -E
打开支持+
.
\w+
匹配一个或多个单词字符。 [\w+]
匹配\
、w
、 或中的任何一个+
。
\w
不便携。对于 POSIX 兼容性,请使用:
$ sed -E 's/fastcgi_param WP_ENV [[:alnum:]]+/fastcgi_param WP_ENV production/g' file
fastcgi_param WP_ENV production;
Run Code Online (Sandbox Code Playgroud)您可以通过使用捕获组来避免该行的双重输入:
$ sed -E 's/(fastcgi_param WP_ENV) [[:alnum:]]+/\1 production/g' file
fastcgi_param WP_ENV production;
Run Code Online (Sandbox Code Playgroud) 归档时间: |
|
查看次数: |
1478 次 |
最近记录: |