gpt4 book ai didi

regex - linux bash 字符串替换

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:22:22 26 4
gpt4 key购买 nike

这里的实际要求是在运行时用值替换 nginx 服务器 block 中的一些标签,相当标准的东西:

server {
listen 80;# default_server;

root <sitepath />/<sitename />/sitefiles/public;

fastcgi_buffers 16 16k;
fastcgi_buffer_size 32k;

index index.php index.html index.htm;

server_name <sitename />;#<- server_domain_or_$

error_log <sitepath />/<sitename />/platform_dir/logs/nginxerror.log;
access_log <sitepath />/<sitename />/platform_dir/logs/nginxaccess.log;


location / {
try_files $uri $uri/ /index.php?$query_string;
}

location ~ \.php$ {
try_files $uri /index.php =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_read_timeout 60;
include fastcgi_params;
}
}

我已将文件加载到 $block 中并希望替换标签 <sitepath />使用变量 $wwwroot 的值。测试时

echo "$block" | sed -r "s/<sitepath \/>+/$wwwroot/g"

我得到了错误

sed: -e expression #1, char 19: unknown option to `s'

最佳答案

我要冒险并假设 $wwwroot 包含斜杠。
这将成为您的 sed 命令的问题,因为您已选择斜杠作为正则表达式分隔符。使用不同的字符(不太可能成为您的 $wwwroot 一部分的字符,例如 #)应该可以解决这个问题:

echo "$block" | sed -r "s#<sitepath />#$wwwroot#g"

关于regex - linux bash 字符串替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41210016/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com