Що означає #
символ у цьому рядку:
/bin/sed -e 's#abc#zzz#g'
Що означає #
символ у цьому рядку:
/bin/sed -e 's#abc#zzz#g'
Відповіді:
Це роздільник, так само "/"
, як і він 's/abc/zzz/g'
.
це означає пошук "abc" замінити його на "zzz", глобальним прапором, означає зробити це для всіх "abc" на лінії, а не лише першого.
Ви також можете використати альтернативний роздільник для адреси шаблону, але в цьому випадку вам потрібно уникнути, щоб він був правильно інтерпретований:
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
sbabeb
робить те саме, що і s/a/e/
.
/
можна замінити альтернативним символом у контекстах, відмінних від командиs
(заміна), але в цьому випадку його потрібно уникнути вперше, наприкладsed '/foo/d'
(видалити відповідність рядківfoo
) стаєsed '\#foo#d'