Unix 替换命令后的SED字符(“s”)

Unix 替换命令后的SED字符(“s”),unix,sed,Unix,Sed,我知道s/在sed中键入命令,但从未见过使用s。有人能解释一下这到底是怎么回事吗 % sed -e "s#SRC_DIR=.*#SRC_DIR=$PROJECT_SRC_DIR#g" -i proj.cfg 我知道-e定义了一个要执行的脚本,该脚本带有“”,但是s#到底做了什么 检查和gnu网站,但没有运气。是一个sed分隔符,类似于/。我们可以使用~,,/,,等作为sed分隔符。它们使用不同的分隔符#,因为它们不想转义/斜杠。如果使用作为分隔符,则不需要转义/正斜杠。但是,如果使用 /作为定

我知道
s/
sed
中键入命令,但从未见过使用
s
。有人能解释一下这到底是怎么回事吗

% sed -e "s#SRC_DIR=.*#SRC_DIR=$PROJECT_SRC_DIR#g" -i proj.cfg
我知道
-e
定义了一个要执行的脚本,该脚本带有
”,但是
s#
到底做了什么

检查和gnu网站,但没有运气。

是一个sed分隔符,类似于
/
。我们可以使用
~
/
,等作为sed分隔符。它们使用不同的分隔符
#
,因为它们不想转义
/
斜杠。如果使用
作为分隔符,则不需要转义
/
正斜杠。但是,如果使用<代码> /<代码>作为定界符,则必须避免<代码> /<代码>为<代码> \/<代码>,否则,SED将考虑<代码> /<代码>作为定界符。

< P>从:

s(在替换中)命令的语法是“s/regexp/replacement/flags”。在任何给定的s命令中,/字符可以统一替换为任何其他单个字符。/character(或替代它使用的任何其他字符)只有在前面有\字符时才能出现在regexp或replacement中


s
的命令标记几乎是您想要的任何字符。使用
/
以外的内容只意味着不需要在内容中转义斜杠。常用的备用分隔符是
#
^
,等等。grymoire页面甚至谈到为
s
使用备用分隔符,只是没有将
#
用作exmaple。它使用了
|
,这也是常见的替代方案。感谢Avinash和Etan,这很有意义。