当我尝试使用sed在文档中对正则行进行正则表达式时,我遇到了问题。 这是我想要的正则表达式:
proxy_pass http:\\ 193.168.19.35 /;
我想获得以下结果:
proxy_pass http:\\ 193.168.19.32 /;
这就是我的尝试:
sed -r 's/^proxy_pass htpp\:\/\/[[:digit:]]+.*\/;/proxy_pass htpp\:\/\/192.168.81.29\/;/' /etc/nginx/nginx.conf > /etc/nginx/nginx.conf.temp
你们能在这帮助我吗?
答案 0 :(得分:2)
如果您的网址为\\
,则需要在正则表达式中添加对此模式的支持。我相信你在问题中拼错了一些字。
因此,如果您想匹配proxy_pass http:\\193.168.19.32/;
,请使用
sed -r 's/^proxy_pass http\:\\\\[[:digit:]]+(\.[[:digit:]]+)*\/;/proxy_pass htpp\:\/\/192.168.81.29\/;/' /etc/nginx/nginx.conf > /etc/nginx/nginx.conf.temp
^^^^ |---------------|
如果您要替换proxy_pass http://193.168.19.32/;
,请使用
sed -r 's/^proxy_pass http\:\/\/[[:digit:]]+(\.[[:digit:]]+)*\/;/proxy_pass htpp\:\/\/192.168.81.29\/;/' /etc/nginx/nginx.conf > /etc/nginx/nginx.conf.temp
^ ^ |---------------|
注意模式中的(\.[[:digit:]]+)*
,它可以匹配IP地址的所有4个部分。