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

时间:2014-12-05 15:24:25

标签: unix sed

我在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网站,但没有运气。

2 个答案:

答案 0 :(得分:2)

#是一个像/这样的sed分隔符。我们可以使用~#/;等作为sed分隔符。它们使用不同的分隔符#,因为它们不想转义/斜杠。如果使用#作为分隔符,则无需转义/正斜杠。但是,如果您使用/作为分隔符,则必须将/转义为\/,否则sed会将/视为分隔符。

答案 1 :(得分:1)

来自sed's manual

  

s(在替换中)命令的语法是's / regexp / replacement / flags'。 /字符可以由任何给定s命令中的任何其他单个字符统一替换。 /字符(或其他任何字符代替它)只有在前面带有\字符时才会出现在regexp或replacement中。