Что делает # символ, средний в:/bin/sed-e 's#abc#zzz#g'?

Что делает # символ, средний в этой строке:

/bin/sed -e 's#abc#zzz#g'
10
задан 17 June 2017 в 13:32

2 ответа

Это - разделитель, точно так же, как "/", это - то же как 's/abc/zzz/g'.

это означает, что поиск "abc" заменяет его "zzz" глобальным флагом, средства делают это для всей "abc" s на строке, не только первой.

можно также использовать альтернативный разделитель для адреса шаблона, но в этом случае, необходимо выйти из него, чтобы он был правильно интерпретирован:

sed -r '\#abc#p'
14
ответ дан 23 November 2019 в 04:15

Это - разделитель или разделитель. Обычно используемый / как в

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
24
ответ дан 23 November 2019 в 04:15

Другие вопросы по тегам:

Похожие вопросы: