假设我的文件a.conf如下
Include /1
Include /2
Include /3
Run Code Online (Sandbox Code Playgroud)
我想用新行替换"Include/2",我在.sh文件中编写代码:
line="Include /2"
rep=""
sed -e "s/${line}/${rep}/g" /root/new_scripts/a.conf
Run Code Online (Sandbox Code Playgroud)
但运行sh文件后,它给我以下错误
sed: -e expression #1, char 14: unknown option to `s'
Run Code Online (Sandbox Code Playgroud)
luk*_*sen 16
如果您使用的是较新版本的sed,则可以使用-i来读取和写入同一文件.使用-i,您可以指定文件扩展名,以便进行备份,防止出现问题.除非您使用多个命令,否则您不需要使用-e标志
sed -i.bak "s/${line}/${rep}/g" /root/new_scripts/a.conf
Run Code Online (Sandbox Code Playgroud)
我刚刚注意到,由于您使用的变量是带引号的字符串,您可能希望在sed表达式周围使用单引号.您的字符串也包含正斜杠,以避免任何错误,您可以在sed命令中使用不同的分隔符(分隔符不需要是斜杠):
sed -i.bak 's|${line}|${rep}|g' /root/new_scripts/a.conf
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
37649 次 |
| 最近记录: |