我们可以使用命令“sed”将一个字符串替换为包含字符“/”的另一个字符串吗?

我们可以使用命令“sed”将一个字符串替换为包含字符“/”的另一个字符串吗?

我尝试将“_”替换为“/”

$ echo "hahahaa_the_cat_hahahaa" | sed "s/_///g"

它不起作用。

答案1

替换运算符 ( s/old/new/) 可以将任何字符作为分隔符:

$ echo foo | sed 's|f|g|'
goo
$ echo foo | sed 'safaga'
goo

因此,只需使用任何不存在的东西/,你就可以做你想做的事:

$ echo "hahahaa_the_cat_hahahaa" | sed 's|_|/|g'
hahahaa/the/cat/hahahaa

或者,你可以/\(write \/) 来转义:

$ echo "hahahaa_the_cat_hahahaa" | sed 's/_/\//g'
hahahaa/the/cat/hahahaa

答案2

问题在于您在使用它/作为分隔符的sed同时也使用它作为要替换的字符。

尝试使用不同的分隔符,例如|

$ echo "hahahaa_the_cat_hahahaa" | sed 's|_|/|g'

答案3

/使用反斜杠转义斜杠字符\

$ sed 's/_/\//g' <(echo 'https:__askubuntu.com')
https://askubuntu.com

\在“/”之前使用 可阻止“/”被视为分隔符,而是将其视为要翻译的字符...(这可能措辞不太好,抱歉

相关内容