我正在尝试使用 sed 用已定义变量的空格替换一行。
例如,
我想用 $lan 和 lan="~/afile.py 替换“哑字符串”
我以为这条线是
sed "s/a dumb string/$lan/g" file.txt
但这会在 file.txt 中将“哑字符串”部分留空。
我的问题似乎很简单。任何帮助深表感谢。
我确定因为我的@lan 变量中有斜杠,所以我需要使用 sed 命令:
例如
sed "s:a dumb string:$lan:g" file.txt
这可能是一个新手错误,但我对 sed 不是很熟悉。感谢您的帮助。
sed
不知道您正在传递一个变量——它将被解释为您正则表达式的另一部分。如果您的替换包含斜杠,最简单的做法是使用备用分隔符字符,如下所示:
sed "s|a dumb string|$lan|g" file.txt
有时搜索字符串中的空间不起作用,因此需要在 centos 中使用 [[:space:]]。
sed -i 's/User[[:space:]]daemon/User apache/' httpd1.conf