sed用空格和特殊字符替换字符串

时间:2019-07-31 09:46:16

标签: linux bash shell

test23文件包含一行

root_url = %(protocol)s://%(domain)s:%(http_port)s/

我需要替换为

root_url = %(protocol)s://%(domain)s:%(http_port)s/grafana

此脚本中的以下步骤不起作用。

line_old='root_url = %(protocol)s://%(domain)s:%(http_port)s/'
line_new='root_url = %(protocol)s://%(domain)s:%(http_port)s/grafana'
sed -i "s/\${line_old}\/\${line_new}/\g" test23

2 个答案:

答案 0 :(得分:0)

尝试更改sed的分隔符:

sed -i "s|${line_old}|${line_new}|g" test23

示例

echo "${line_old}" | sed "s|${line_old}|${line_new}|g"
root_url = %(protocol)s://%(domain)s:%(http_port)s/grafana

答案 1 :(得分:0)

我会使用:

sed '/^root_url[ ][=]/s/$/grafana/' filename

位置:

  • /^root_url[ ][=]/找到以"root_url ="开头的行,然后
  • 常规替换形式's/$/grafana/'只需在行尾添加“ grafana”。

注意:添加-i以就地编辑文件,或添加-i.bak进行就地编辑,保留{{ 1}})

结果

filename.bak

仔细检查一下,让我知道是否满足您的需求以及是否有任何疑问。