#bash #shell #sed
#bash #оболочка #sed
Вопрос:
Я пытаюсь вставить строку, содержащую косые черты, в определенную строку файла.
Строка, которую я хочу вставить в строку 52 файла:
/*--------------------------------------------------------------
CUSTOM VARS amp; MIXINS
--------------------------------------------------------------*/
@import "custom/custom_vars_mixins";
Пытаясь собрать воедино разные ответы на оба вопроса, я пришел к следующему коду:
sed -i 's#52i
/*--------------------------------------------------------------
CUSTOM VARS amp; MIXINS
--------------------------------------------------------------*/
@import "custom/custom_vars_mixins";#replace#g' ../style.scss
Который возвращает следующую ошибку:
sed: -e expression #1, char 5: unterminated `s' command
Кто-нибудь может помочь с синтаксисом?
Комментарии:
1. Вам нужно экранировать новые строки с помощью обратной косой черты.
2. Прочитайте
man page
ответы на SO вместо того, чтобы собирать вместе .3. Проблема не имеет ничего общего с косыми чертами, проблема в том, что строка содержит новые строки.
4. Вы решили проблему косых черт, используя
#
вместо них разделитель.5. @Barmar Проблема в том, что синтаксис неверен! Пожалуйста, перестаньте оставлять запутанные комментарии. Если вы не уверены: не комментируйте. Если вы понимаете, что комментарий был неправильным: удалите его!
Ответ №1:
Синтаксис, который вы ищете, это:
sed -i '52i
/*--------------------------------------------------------------
CUSTOM VARS amp; MIXINS
--------------------------------------------------------------*/
@import "custom/custom_vars_mixins";' ../style.scss
Комментарии:
1. Спасибо. работает в Linux, но синтаксис для mac os x sed немного отличается. сделал суть для дальнейшего использования: gist.github.com/brnrds/8dfc8423f27f12aa123aa845c2a3a5a7