用sed-e替换斜杠
我正在试图理解下面这个命令对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 "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