fab*_*s05 0 bash sed string escape-characters
我有一个作为路径的字符串:
/tmp/something
Run Code Online (Sandbox Code Playgroud)
我需要用反斜杠转义正斜杠:
\/tmp\/something
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?或许sed
?
请指出我正确的方向。
你可以使用 Bash 自己的变量操作方法(参数扩展)来做到这一点,尽管语法相当可怕:
$ string='/tmp/something'
$ escapedstring="${string//\//\\\/}"
$ printf '%s\n' "$escapedstring"
\/tmp\/something
Run Code Online (Sandbox Code Playgroud)
为了进一步解释这一点,在 bash 中${var//xxx/yyy}
意味着“获取变量var
并将所有出现的 替换xxx
为yyy
”。在这种情况下,需要在指定替换端和替换时对斜杠进行转义;前者用于\/
单个正斜杠,后者用于\\\/
反斜杠加正斜杠,因此您最终会得到可笑的外观${string//\//\\\/}
。
请记住不要使用echo
它来显示其内容,因为根据实现或环境,echo
可能会自行处理反斜杠字符。