我尝试将“_”替换为“/”
$ 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
即\
在“/”之前使用 可阻止“/”被视为分隔符,而是将其视为要翻译的字符...(这可能措辞不太好,抱歉)