Що означає символ # у / bin / sed -e 'abc # zzz # g'?


Відповіді:


14

Це роздільник, так само "/", як і він 's/abc/zzz/g'.

це означає пошук "abc" замінити його на "zzz", глобальним прапором, означає зробити це для всіх "abc" на лінії, а не лише першого.

Ви також можете використати альтернативний роздільник для адреси шаблону, але в цьому випадку вам потрібно уникнути, щоб він був правильно інтерпретований:

sed -r '\#abc#p'

24

Це роздільник або роздільник. Найчастіше використовується такий, /як у

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

Можливо, варто відзначити, що принаймні в GNU sed /можна замінити альтернативним символом у контекстах, відмінних від команди s(заміна), але в цьому випадку його потрібно уникнути вперше, наприклад sed '/foo/d'(видалити відповідність рядків foo) стаєsed '\#foo#d'
steeldriver

@steeldriver справді! - Я бачив, що Равексіна додала це до своєї відповіді, тож, можливо, я залишу свою :)
Занна

1
Не важливо, чи містить потік символ роздільника. Важливо те, чи містять пошуковий рядок або рядок заміни символ роздільника.
kasperd

@kasperd о так, правда. Я трохи відредагував :)
Zanna

@ Відповідь Занни більш суть: Перший символ після команди "s" визначає роздільник, який використовується в цій команді. Тут ви можете використовувати будь-який символ. sbabebробить те саме, що і s/a/e/.
rexkogitans
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.