使用sed-wit-regexp替换
需要用正则表达式替换文件中的字符串。 我的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的建议,使用: 注意:如果使
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选项对我有帮助。谢谢@埃杜阿德·洛佩兹非常感谢。