linux - Sed 无法正常工作 - Shell 脚本

标签 linux bash shell sed ubuntu-14.04

我有两个 sed 命令,它们包含在我的 cook.sh 脚本中。一个命令是

sed -E -i "s/^(\\\$mainDomain=\")[^\"]+(\";)$/\1$MainDomain\2/" /var/config.php

这工作正常。

但是下面的命令几乎是一样的。但它不起作用。

sed -E -i "s/^(\\\$authURI=\")[^\"]+(\";)$/\1$duo_auth\2/" /var/config.php

给出下面的错误信息

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

对此有什么想法吗?

最佳答案

问题可能是由于您的替换变量 $duo_auth 具有未转义的 /,将默认的 sed 分隔符从 /~

sed -E -i "s~^(\\\$authURI=\")[^\"]+(\";)$~\1$duo_auth\2~" /var/config.php

在不使用-i的情况下试一下,看替换是否符合预期,确认后放回去。

例子:-

cat /var/config.php
<?php
$authURI="dev.digin.io";

现在设置变量

duo_auth="http://auth.uri.digin.io:3048/"

现在替换,没有-i

sed -E "s~^(\\\$authURI=\")[^\"]+(\";)$~\1$duo_auth\2~" /var/config.php
<?php
$authURI="http://auth.uri.digin.io:3048/";

关于linux - Sed 无法正常工作 - Shell 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41393321/

相关文章:

shell - 有没有办法防止 cURL 命令解释 macOS Catalina 中的分号?

linux - bash 执行代码在执行 ' sudo -i' 后停止

c++ - Shapes 不是类或命名空间

linux - 查找并执行现有的批处理命令

bash - bash 脚本中的错误替换

python - linux 可执行文件不工作但脚本在 python 中工作

html - 使用 AWK 解析 HTML

C 程序符合要求,但控制台屏幕仍然黑屏

c++ - GoDaddy VPS 上的 UDP 服务器

linux - git 说一切都是最新的