使用 sed 转义两次特殊字符
Escape twice special characters using sed
我在 bash 中将以下字符串变量定义为 version
Uploaded registry/version1.3.1
我需要转义 /
两次,这样字符串看起来像:
registry\/version1.3.1
有没有办法使用sed
查找并替换所有/
到\/
?
一个反斜杠用于将参数更改为文本,反之亦然。
echo 'Uploaded registry/version1.3.1' | sed 's/\//\\\//g'
Uploaded registry\/version1.3.1
在这种情况下,一个反斜杠需要 \
,一个斜杠需要 \/
。
使用sed
您需要两个反斜杠 \
,在 sed
命令的 RHS(右侧)用 单个 反斜杠替换。
此外,最好使用 /
以外的字符作为正则表达式定界符以避免过度转义。
因此您可以使用
sed 's,/,\\/,g'
echo 'Uploaded registry/version1.3.1' | sed 's,/,\\/,g'
# => Uploaded registry\/version1.3.1
使用字符串操作
您也可以在 Bash:
中使用字符串操作
s='Uploaded registry/version1.3.1'
echo "${s//\//\\\/}"
# => Uploaded registry\/version1.3.1
这里反斜杠又要加一倍,加一个\
来转义/
。请注意,"${s//a/b}
表示:将 s
变量 .
中所有出现的 a
替换为 b
我在 bash 中将以下字符串变量定义为 version
Uploaded registry/version1.3.1
我需要转义 /
两次,这样字符串看起来像:
registry\/version1.3.1
有没有办法使用sed
查找并替换所有/
到\/
?
一个反斜杠用于将参数更改为文本,反之亦然。
echo 'Uploaded registry/version1.3.1' | sed 's/\//\\\//g'
Uploaded registry\/version1.3.1
在这种情况下,一个反斜杠需要 \
,一个斜杠需要 \/
。
使用sed
您需要两个反斜杠 \
,在 sed
命令的 RHS(右侧)用 单个 反斜杠替换。
此外,最好使用 /
以外的字符作为正则表达式定界符以避免过度转义。
因此您可以使用
sed 's,/,\\/,g'
echo 'Uploaded registry/version1.3.1' | sed 's,/,\\/,g'
# => Uploaded registry\/version1.3.1
使用字符串操作
您也可以在 Bash:
中使用字符串操作s='Uploaded registry/version1.3.1'
echo "${s//\//\\\/}"
# => Uploaded registry\/version1.3.1
这里反斜杠又要加一倍,加一个\
来转义/
。请注意,"${s//a/b}
表示:将 s
变量 .
a
替换为 b