sed -e 's/{basedir}\\/log/var/log/tvu/s3transfer/g' -i ./opt/tvu/s3transfer/NLog.config
时间: 2023-08-13 21:07:22 浏览: 120
你的sed命令看起来基本正确,但在替换字符串中使用了双反斜杠来转义斜杠。在sed中,斜杠不需要进行转义。请尝试使用单反斜杠来表示路径分隔符,并将命令修改为:
```
sed -e 's/{basedir}\/log/var\/log\/tvu\/s3transfer/g' -i ./opt/tvu/s3transfer/NLog.config
```
这样应该能够正确执行替换操作。
相关问题
sed -e s/{basedir}\/log/var/log/tvu/s3transfer/g -i ./opt/tvu/s3transfer/NLog.config
你的sed命令中的问题在于你使用了斜杠作为替换字符串中的分隔符,而替换字符串中包含了斜杠。这导致sed无法正确解析命令,并给出了错误提示。
为了解决这个问题,你可以选择不使用斜杠作为分隔符,而选择其他不在替换字符串中出现的字符,比如逗号。修改后的命令如下所示:
```
sed -e 's,{ba
shell脚本查找文件/etc/rsyslog.d/50-default.conf 中包含字段"/var/log/syslog"的行,并把此行内容变为*.*;auth,authpriv,local0.none,local1.none -/var/log/syslog
在shell脚本中,你可以使用`grep`命令查找文件中包含特定字符串的行,然后使用`sed`替换指定的内容。以下是一个示例脚本来完成这个任务:
```bash
#!/bin/bash
# 查找包含 "/var/log/syslog" 的行
MATCH_LINE=$(grep -l '/var/log/syslog' /etc/rsyslog.d/50-default.conf)
if [ $? -eq 0 ]; then
# 如果找到匹配行,使用 sed 替换内容
SED_CMD="sed -i 's|/var/log/syslog|*.*;auth,authpriv,local0.none,local1.none -/var/log/syslog|g' $MATCH_LINE"
# 执行sed替换
eval $SED_CMD
# 检查操作是否成功
if [ $? -eq 0 ]; then
echo "修改了文件 $MATCH_LINE 的内容."
else
echo "替换文件 $MATCH_LINE 内容失败."
fi
else
echo "未找到包含 '/var/log/syslog' 的行."
fi
```
请注意,这个脚本假设你的系统支持 `sed -i`,它可以在原文件上直接做修改。如果不支持,你需要先备份原始文件再进行编辑。
阅读全文