На этот вопрос уже есть ответ здесь:
Я пытаюсь заменить "_" на "/"
$ echo "hahahaa_the_cat_hahahaa" | sed "s/_///g"
Не работает.
Оператор замены (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
С другой стороны, можно выйти /
с a \
(запишите \/
):
$ echo "hahahaa_the_cat_hahahaa" | sed 's/_/\//g'
hahahaa/the/cat/hahahaa
Проблема состоит в том, что Вы используете /
как Ваш разделитель в sed
также с помощью него в качестве символа для замены.
Попытайтесь использовать другой разделитель такой как |
:
$ echo "hahahaa_the_cat_hahahaa" | sed 's|_|/|g'
Выйдите из наклонной черты /
символ обратной косой чертой \
:
$ sed 's/_/\//g' <(echo 'https:__askubuntu.com')
https://askubuntu.com
т.е. использование a \
перед "/" останавливается "/" рассматриваемый как разделитель, но как символ, который будет переведен... (это, вероятно, не сформулировано очень хорошо извините),