正则表达式替换shell中具有特殊字符的字符串

时间:2015-05-13 09:48:10

标签: regex shell

我有一个名为sample.txt的文本文件,其中包含

name="sam:18"

我希望将其替换为配置文件中给出的名称,该名称名为name.config,其中包含

name="robin:19"

这是我的脚本名为nameReplace.sh:

#!/bin/bash
source name.config
sed -i -e 's/name=[A-Za-z0-9]*/name=${name}/g' sample.txt

这会执行但不会对sample.txt进行任何更改。

我想在sample.txt中输出以下内容:

name="robin:19"

请帮忙?谢谢

1 个答案:

答案 0 :(得分:1)

你的正则表达式:

name=[A-Za-z0-9]*

赢了不匹配:

name="sam:18"

将您的sed更改为:

sed -i.bak "s/name=.*/name=\"${name}\"/" sample.txt

此处使用双引号可以展开$name变量。