使用sed将带有空格的文本替换为带有斜杠的已定义变量

时间:2013-03-05 23:37:04

标签: bash unix sed

我正在尝试使用sed替换带有定义变量的空格的行。

例如,

我想用$ lan替换'哑字符串',并且lan =“〜/ afile.py

我认为该行将是

sed "s/a dumb string/$lan/g" file.txt

但是这会在file.txt中将'哑字符串'部分留空。

我的问题似乎很简单。任何帮助深表感谢。

3 个答案:

答案 0 :(得分:12)

我确定因为我的@lan变量中有斜杠,我需要使用sed命令:

例如

sed "s:a dumb string:$lan:g" file.txt

这可能是一个新手的错误,但我对sed并不熟悉。谢谢你的帮助。

答案 1 :(得分:11)

sed不知道你传递了一个变量 - 它将被解释为你的正则表达式的另一部分。如果您的替换包含斜杠,最简单的方法是使用备用分隔符char,如下所示:

sed "s|a dumb string|$lan|g" file.txt

答案 2 :(得分:2)

搜索字符串中的某些空间不起作用,因此需要在centos中使用[[:space:]]。

    sed -i 's/User[[:space:]]daemon/User apache/' httpd1.conf