Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用sed-wit-regexp替换_Regex_Bash_Sed - Fatal编程技术网

使用sed-wit-regexp替换

使用sed-wit-regexp替换,regex,bash,sed,Regex,Bash,Sed,需要用正则表达式替换文件中的字符串。 我的regexp是api.(dev[0-9]+\)?side.com,我将其用于调用: sed "s/api.(dev[0-9]+\.)?side.com/$SERVER_HOST_VALUE/g" 但它没有找到任何像“api.side.com”或“api.dev02.side.com”这样的字符串。正则表达式适用于我,而不仅仅适用于“sed”命令 因此,如何在sed中正确使用当前regexp?根据@fedorqui和@hwnd的建议,使用: 注意:如果使

需要用正则表达式替换文件中的字符串。 我的regexp是
api.(dev[0-9]+\)?side.com
,我将其用于调用:

sed "s/api.(dev[0-9]+\.)?side.com/$SERVER_HOST_VALUE/g"
但它没有找到任何像“api.side.com”或“api.dev02.side.com”这样的字符串。正则表达式适用于我,而不仅仅适用于“sed”命令


因此,如何在
sed
中正确使用当前regexp?

根据@fedorqui和@hwnd的建议,使用:

注意:如果使用单引号而不是双引号,则变量
$SERVER\u HOST\u VALUE
将不会展开

试验
SERVER\u HOST\u VALUE=“棒极了”
测试=(“api.side.com”“api.dev05.side.com”)
对于“${tests[@]}”中的t;做
echo“$t”| sed-re”s/api.(dev[0-9]+\)?side.com/$SERVER\u HOST\u VALUE/g”
完成
输出 请注意如何将匹配项替换为
$SERVER\u HOST\u值

AWESOME
AWESOME

根据@fedorqui和@hwnd的建议,使用:

注意:如果使用单引号而不是双引号,则变量
$SERVER\u HOST\u VALUE
将不会展开

试验
SERVER\u HOST\u VALUE=“棒极了”
测试=(“api.side.com”“api.dev05.side.com”)
对于“${tests[@]}”中的t;做
echo“$t”| sed-re”s/api.(dev[0-9]+\)?side.com/$SERVER\u HOST\u VALUE/g”
完成
输出 请注意如何将匹配项替换为
$SERVER\u HOST\u值

AWESOME
AWESOME

根据@fedorqui和@hwnd的建议,使用:

注意:如果使用单引号而不是双引号,则变量
$SERVER\u HOST\u VALUE
将不会展开

试验
SERVER\u HOST\u VALUE=“棒极了”
测试=(“api.side.com”“api.dev05.side.com”)
对于“${tests[@]}”中的t;做
echo“$t”| sed-re”s/api.(dev[0-9]+\)?side.com/$SERVER\u HOST\u VALUE/g”
完成
输出 请注意如何将匹配项替换为
$SERVER\u HOST\u值

AWESOME
AWESOME

根据@fedorqui和@hwnd的建议,使用:

注意:如果使用单引号而不是双引号,则变量
$SERVER\u HOST\u VALUE
将不会展开

试验
SERVER\u HOST\u VALUE=“棒极了”
测试=(“api.side.com”“api.dev05.side.com”)
对于“${tests[@]}”中的t;做
echo“$t”| sed-re”s/api.(dev[0-9]+\)?side.com/$SERVER\u HOST\u VALUE/g”
完成
输出 请注意如何将匹配项替换为
$SERVER\u HOST\u值

AWESOME
AWESOME


对于扩展的regexp,使用sed-r。否则,请转义所有内容:
sed“s/api.\(dev[0-9]\+\)\?side.com/$SERVER\u HOST\u VALUE/g”文件
我的regexp是
api.(dev[0-9]+\)?parkme.com
?如果regexp是
api.(dev[0-9]+\)?parkme.com
,为什么在命令中使用
api.(dev[0-9]+\)?side.com
<代码>停车场!=<代码>侧面@Barmar Sory,我的错。Edited请注意,正则表达式有许多方言,而
sed
默认正则表达式比大多数其他方言更简单。您需要学习您选择的工具支持的正则表达式,或者如何使您选择的工具使用您想要的正则表达式方言(这是一个选项)。使用
sed-r
,对于regexp extended。否则,请转义所有内容:
sed“s/api.\(dev[0-9]\+\)\?side.com/$SERVER\u HOST\u VALUE/g”文件
我的regexp是
api.(dev[0-9]+\)?parkme.com
?如果regexp是
api.(dev[0-9]+\)?parkme.com
,为什么在命令中使用
api.(dev[0-9]+\)?side.com
<代码>停车场!=<代码>侧面@Barmar Sory,我的错。Edited请注意,正则表达式有许多方言,而
sed
默认正则表达式比大多数其他方言更简单。您需要学习您选择的工具支持的正则表达式,或者如何使您选择的工具使用您想要的正则表达式方言(这是一个选项)。使用
sed-r
,对于regexp extended。否则,请转义所有内容:
sed“s/api.\(dev[0-9]\+\)\?side.com/$SERVER\u HOST\u VALUE/g”文件
我的regexp是
api.(dev[0-9]+\)?parkme.com
?如果regexp是
api.(dev[0-9]+\)?parkme.com
,为什么在命令中使用
api.(dev[0-9]+\)?side.com
<代码>停车场!=<代码>侧面@Barmar Sory,我的错。Edited请注意,正则表达式有许多方言,而
sed
默认正则表达式比大多数其他方言更简单。您需要学习您选择的工具支持的正则表达式,或者如何使您选择的工具使用您想要的正则表达式方言(这是一个选项)。使用
sed-r
,对于regexp extended。否则,请转义所有内容:
sed“s/api.\(dev[0-9]\+\)\?side.com/$SERVER\u HOST\u VALUE/g”文件
我的regexp是
api.(dev[0-9]+\)?parkme.com
?如果regexp是
api.(dev[0-9]+\)?parkme.com
,为什么在命令中使用
api.(dev[0-9]+\)?side.com
<代码>停车场!=<代码>侧面@Barmar Sory,我的错。Edited请注意,正则表达式有许多方言,而
sed
默认正则表达式比大多数其他方言更简单。你需要学习你选择的工具支持的正则表达式,或者如何让你选择的工具使用你想要的正则表达式方言(这是一个选项)。+1对于链接,我不知道这个explainshell工具。另外,如果您在测试中指出输出,那也很好。@eadouard Lopez-r选项对我有帮助。谢谢@埃杜阿德·洛佩兹非常感谢。+1的链接,我不知道这个解释shell工具。另外,如果您在测试中指出输出,那也很好。@eadouard Lopez-r选项对我有帮助。谢谢@埃杜阿德·洛佩兹非常感谢。+1的链接,我不知道这个解释shell工具。另外,如果您在测试中指出输出,那也很好。@eadouard Lopez-r选项对我有帮助。谢谢@埃杜阿德·洛佩兹非常感谢。+1的链接,我不知道这个解释shell工具。另外,如果您在测试中指出输出,那也很好。@eadouard Lopez-r选项对我有帮助。谢谢@埃杜阿德·洛佩兹非常感谢。