我在s//
中了解sed
类型命令,但从未见过使用s#
。有人可以解释这究竟是做什么的吗?
% sed -e "s#SRC_DIR=.*#SRC_DIR=$PROJECT_SRC_DIR#g" -i proj.cfg
我了解-e
定义了要执行的脚本,脚本正在使用""
,但s#
究竟是什么?
已查看http://www.grymoire.com/Unix/Sed.html和gnu网站,但没有运气。
答案 0 :(得分:2)
#
是一个像/
这样的sed分隔符。我们可以使用~
,#
,/
,;
等作为sed分隔符。它们使用不同的分隔符#
,因为它们不想转义/
斜杠。如果使用#
作为分隔符,则无需转义/
正斜杠。但是,如果您使用/
作为分隔符,则必须将/
转义为\/
,否则sed会将/
视为分隔符。
答案 1 :(得分:1)
来自sed
's manual:
s(在替换中)命令的语法是's / regexp / replacement / flags'。 /字符可以由任何给定s命令中的任何其他单个字符统一替换。 /字符(或其他任何字符代替它)只有在前面带有\字符时才会出现在regexp或replacement中。