用sed-e替换斜杠

用sed-e替换斜杠,sed,Sed,我正在试图理解下面这个命令对sed中的-e和命令中的感叹号的作用 sed -e "s!VPC_CIDR!"$(get_cluster_vpc_cidr)"!g" "templates/network-policies-${ns}.yaml" 此命令有助于将VPC_CIDR替换为1.2.3.4\16 有人能帮我解释一下吗?-e选项只是告诉sed下一个参数是要执行的脚本“s!VPC\u CIDR!”$(get\u cluster\u V

我正在试图理解下面这个命令对sed中的-e和命令中的感叹号的作用

sed -e "s!VPC_CIDR!"$(get_cluster_vpc_cidr)"!g" "templates/network-policies-${ns}.yaml" 
此命令有助于将VPC_CIDR替换为1.2.3.4\16


有人能帮我解释一下吗?

-e
选项只是告诉sed下一个参数是要执行的脚本<代码>“s!VPC\u CIDR!”$(get\u cluster\u VPC\u CIDR)“!g”是脚本

的用法很奇怪。我只想
”s!VPC_CIDR$(获取集群专有网络cidr)!g“
。由于
$(get\u cluster\u vpc\u cidr)
不在
引号内,因此结果将进行分词和文件名扩展。也就是说,它将在空格和
*
字符上出现故障

“s!VPC\u CIDR!”$(get\u cluster\u VPC\u CIDR)“!g”
是一个
sed
脚本。
s
命令执行以下操作:

尝试将regexp与模式空间匹配。如果成功,则替换与替换匹配的部分。替换可能包括—— t特殊字符&指匹配的图案空间部分,特殊转义符\1到\9指 regexp中相应的匹配子表达式

但是你认为-啊
不是
/
!但是,正如
man1sed
告诉我们的
这只是sed命令的一个简短概要,提醒那些已经知道sed的人。这将带来更多的信息:

用替换字符串替换模式空间中BRE的实例除a以外的任何字符或可代替a用于分隔BRE和替换。在BRE和替换中,如果BRE分隔符前面有一个字符,则它本身可以用作文字字符

任何角色。您可以每次传递字节0x01,比如
sed$'s\x01BRE\x01replacement\x01'
,它是一个有效的脚本


所以
s!VPC_CIDR$(获取集群专有网络cidr)!g
命令替换
VPC\u CIDR
字符串的每次出现(即
g
全局标志)(该字符串为文本,没有特殊的正则表达式)以输出
$(get\u cluster\u VPC\CIDR)
(除了
&
\1
等在替换部分特别解释)<代码>“s!VPC\u CIDR!”$(get\u cluster\u VPC\u CIDR)“!g”
是脚本

的用法很奇怪。我只想
”s!VPC_CIDR$(获取集群专有网络cidr)!g“
。由于
$(get\u cluster\u vpc\u cidr)
不在
引号内,因此结果将进行分词和文件名扩展。也就是说,它将在空格和
*
字符上出现故障

“s!VPC\u CIDR!”$(get\u cluster\u VPC\u CIDR)“!g”
是一个
sed
脚本。
s
命令执行以下操作:

尝试将regexp与模式空间匹配。如果成功,则替换与替换匹配的部分。替换可能包括—— t特殊字符&指匹配的图案空间部分,特殊转义符\1到\9指 regexp中相应的匹配子表达式

但是你认为-啊
不是
/
!但是,正如
man1sed
告诉我们的
这只是sed命令的一个简短概要,提醒那些已经知道sed的人。这将带来更多的信息:

用替换字符串替换模式空间中BRE的实例除a以外的任何字符或可代替a用于分隔BRE和替换。在BRE和替换中,如果BRE分隔符前面有一个字符,则它本身可以用作文字字符

任何角色。您可以每次传递字节0x01,比如
sed$'s\x01BRE\x01replacement\x01'
,它是一个有效的脚本


所以
s!VPC_CIDR$(获取集群专有网络cidr)!g
命令替换
VPC\u CIDR
字符串的每次出现(即
g
全局标志)(该字符串为文本,没有特殊的正则表达式)以输出
$(get\u cluster\u VPC\CIDR)
(除了
&
\1
等在替换部分特别解释).

-e
表示下一项是sed命令,
在这里用作正则表达式分隔符。它在VPC_CIDR中使用反斜杠对我有效。只需使用sed的\VPC\u CIDR \“$(获取集群\u VPC\u CIDR)”\g“,cidr中出错的反斜杠
sed cmd文件
sed-e cmd文件
相同<当给出多个命令时,需要使用code>-e
,以便执行sed-e cmd-e cmd-e cmd-e cmd path
。当只给出一个命令时,它通常被忽略。
-e
表示下一项是sed命令,并且
在这里用作正则表达式分隔符。它在VPC_CIDR中使用反斜杠对我有效。只需使用sed的\VPC\u CIDR \“$(get_cluster\u VPC\u CIDR)”\g,“CIDR”中的反斜杠错误输出
sed cmd file
sed-e cmd file
-e
是相同的。当给出多个命令时,需要使用
sed-e cmd-e cmd-e cmd-e cmd路径
。当只给出一个命令时,通常会忽略它。
s/regexp/replacement/
 [2addr]s/BRE/replacement/flags