13

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

例如,

我想用 $lan 和 lan="~/afile.py 替换“哑字符串”

我以为这条线是

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

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

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

4

3 回答 3

16

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

例如

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

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

于 2013-03-05T23:59:55.920 回答
16

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

sed "s|a dumb string|$lan|g" file.txt
于 2013-03-06T00:00:21.503 回答
4

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

    sed -i 's/User[[:space:]]daemon/User apache/' httpd1.conf
于 2016-05-13T16:54:09.597 回答