0

我在脚本中有一个字符串变量x=tmp/variable/custom-sqr-sample/test/example ,我想做的是用/替换所有的“-”,之后,我应该得到以下字符串

x=tmp/variable/custom/sqr/sample/test/example 

谁能帮我?

我尝试了以下语法它不起作用

exa=tmp/variable/custom-sqr-sample/test/example
exa=$(echo $exa|sed 's/-///g')
4

3 回答 3

2

sed 基本上支持任何分隔符,当您尝试匹配 a 时,它会派上用场/,最常见的是|#@选择一个不在您需要处理的字符串中的分隔符。

$ echo $x
tmp/variable/custom-sqr-sample/test/example

$ sed 's#-#/#g' <<< $x
tmp/variable/custom/sqr/sample/test/example

在您上面尝试的推荐中,您只需要转义斜线,即

echo $exa | sed 's/-/\//g'

但选择不同的分隔符更好。

于 2013-03-07T18:22:25.803 回答
1

与这种情况相比,该tr工具可能是更好的选择sed

x=tmp/variable/custom-sqr-sample/test/example
echo "$x" | tr -- - /

(这--不是绝对必要的,但可以防止tr(和人类)误认为-一个选项。)

于 2013-03-07T18:52:38.603 回答
0

bash中,您可以使用参数替换:

$ exa=tmp/variable/custom-sqr-sample/test/example
$ exa=${exa//-/\/}
$ echo $exa
tmp/variable/custom/sqr/sample/test/example
于 2013-03-07T19:42:48.767 回答