My input (from Jenkins) goes under the second %s parameter and some of it contains slashes.
I would like to replace /
with \/
, not sure where and how I can do it
'''sed -i -e 's/^\\(%s[ ]*=[ ]*\\)\\(.*\\)/\\1%s/' "%s/file/%s"'''
My guess it should be inside the second parenthesis \\(.*\\)
? How can I express the replace /
with \/
?
I know I can use another sed delimiter but I would also like to understand whether and how it is possible to manipulate input with capture groups and regex
CodePudding user response:
If you use /
as the substitute delimiter, then it's a special character and needs to be escaped yielding \/
The backslash is already a meta character and needs to be escaped to be treated literally yielding \\
. Putting it together:
s/\//\\\//g
will replace all slashes with \/
.
It will be easier to read if you use another delimiter:
s:/:\\/:g
CodePudding user response:
Using sed
$ echo "s3://bucket/folder/text.txt" | sed s'|\(/\)|\\\1|g'
s3:\/\/bucket\/folder\/text.txt