Замена строки в файле другой строкой с использованием sed? - PullRequest
0 голосов
/ 09 ноября 2011

Вот что я пытаюсь заставить работать:

У меня есть следующая строка в файле конфигурации

subscribed_pages[]=WikiPage.ChildPage.*

Я хочу просмотреть кучу файлов и заменить эту строку, котораяначинается с subscribed_pages[]= и независимо от того, какова остальная часть строки, я хочу, чтобы она выглядела.

subscribed_pages[]=*

Я пытаюсь сделать это с одним файлом и получаю следующую ошибку.

sed 's/subscribed_pages[]=.*/subscribed_pages[]=\*/' -i  1288079906.93.57631
sed: -e expression #1, char 46: unterminated `s' command

Ответы [ 2 ]

6 голосов
/ 09 ноября 2011

Вам нужно экранировать [ и ] как \[ и \] в шаблоне поиска.

$ echo 'subscribed_pages[]=WikiPage.ChildPage.*' \
    | sed -e 's/subscribed_pages\[\]=.*/subscribed_pages[]=\*/'
subscribed_pages[]=*
2 голосов
/ 09 ноября 2011

Помимо выхода за скобки, вы можете избежать повторного ввода совпадения в заменяющей части:

sed -r 's/(subscribed_pages\[\]=).*/\1\*/'

\ 1 до \ 9 относится к n-й строке в скобках («группа» в регулярном выражении)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...