Что делает #
символ, средний в этой строке:
/bin/sed -e 's#abc#zzz#g'
Это - разделитель, точно так же, как "/"
, это - то же как 's/abc/zzz/g'
.
это означает, что поиск "abc" заменяет его "zzz" глобальным флагом, средства делают это для всей "abc" s на строке, не только первой.
можно также использовать альтернативный разделитель для адреса шаблона, но в этом случае, необходимо выйти из него, чтобы он был правильно интерпретирован:
sed -r '\#abc#p'
Это - разделитель или разделитель. Обычно используемый /
как в
sed 's/old/new/' file
Но sed возьмет первый символ после команды (команд) как разделитель. Можно использовать любой удобный символ, например...
sed 's%old%new%' file
Это очень полезно, если файл содержит /
(или другие стандартные символы-разделители). Можно выбрать в качестве разделителя некоторый символ, что Вы знаете, что не должны будете помещать в Ваш sed
выражение, сохраняя Вас большой раздражающий выход.
Скажем, Вы хотите заменить
https://askubuntu.com/questions
с
https://askubuntu.com/posts
Вы могли использовать
sed 's/https:\/\/askubuntu.com\/questions/https:\/\/askubuntu.com\/posts/' file
Но лучше использовать
sed 's|https://askubuntu.com/questions|https://askubuntu.com/posts|' file