Bash 困惑!Sed中的字符

Bash 困惑!Sed中的字符,bash,sed,Bash,Sed,这两个sed命令的行为似乎相同: $ sed "s/^replace=*/replace=mytest/g" test.txt $ sed " s!^replace=*!replace=mytest!g " test.txt 为什么会这样?你能听到字符而不是/?我看不到对的太多解释sed文档中的字符。您应该更仔细地阅读手册页:) : 3.5 s命令 s(在替换中)命令的语法是“s/regexp/replacement/flags”。在任何给定的s命令中,/字符可以统一替换为任何其他单个

这两个sed命令的行为似乎相同:

$ sed "s/^replace=*/replace=mytest/g" test.txt 

$ sed "
  s!^replace=*!replace=mytest!g
" test.txt

为什么会这样?你能听到
字符而不是
/
?我看不到对
的太多解释sed文档中的字符。

您应该更仔细地阅读手册页:)

:

3.5 s命令

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

tl;博士

正如这些手册页中提到的,您可以使用任何单个字符作为sed
regexp
replacement
的分隔符

编辑:
感谢crystal将其清理干净:)

您应该更仔细地阅读手册页:)

:

3.5 s命令

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

tl;博士

正如这些手册页中提到的,您可以使用任何单个字符作为sed
regexp
replacement
的分隔符

编辑:
感谢crystal将其清理干净:)

您确定它是
不是一个
|
(管道)?我肯定是的!注意引用,例如,
bash
,解释
引用刘海时要非常小心,因为我记得
zsh
解释了
甚至在引号中。您确定它是
不是一个
|
(管道)?我肯定是的!注意引用,例如,
bash
,解释
引用刘海时要非常小心,因为我记得
zsh
解释了
即使在引号中。@Nashid,也可以是任何单个字符,而不是“/”或“!”:)从技术上讲,手册的这一部分描述了如何使用模式匹配解决问题,而与搜索替换功能/语法无关。信息页面更清楚一些:“s”(如替换)命令的语法是“s/REGEXP/REPLACEMENT/FLAGS”。“/”字符可以统一替换为任何给定的“s”命令中的任何其他单个字符。@Nashid,它可以是任何单个字符,而不是“/”或“!”:)从技术上讲,手册的这一部分描述了如何使用模式匹配解决问题,而与搜索替换功能/语法无关。信息页面更清楚一些:“s”(如替换)命令的语法是“s/REGEXP/REPLACEMENT/FLAGS”。“/”字符可以统一替换为任何给定的“s”命令中的任何其他单个字符。