Текст замены в заключает в кавычки в энергии

У меня есть большой sql файл, и я хотел бы переименовать имя таблицы от 'обратной связи' до 'комментариев', но я не хочу заменять обратную связь слова в случае, если любая строка имеет тот текст, таким образом, я пытался выбрать его с кавычками, но энергия не может найти его. Я использую

:s/`feedback`/`comments`/

Какая-либо идея, как сделать это? возможно, энергия не является te наилучшим вариантом для этого?

4
задан 7 November 2014 в 13:33

3 ответа

В то время как vim, конечно, способно к выполнению этого, моя первая мысль должна была бы использовать sed или perl. Используя sed:

sed -i.bak 's/`feedback`/`comments`/g' path/to/file

Эти -i флаг делает sed, работают, операции в файлах, определенных вместо того, чтобы писать в stdout (-isuffix, делает резервную копию path/to/filesuffix).

6
ответ дан 17 November 2019 в 13:44

Попытка в энергии:

:%s/`feedback`/`comments`/gc

это должно работать, как Вы ожидали

5
ответ дан 17 November 2019 в 13:44

Вот vi/vim острота (использование ex -s постараться не открывать полноэкранного редактора, приводящего к короткой флэш-памяти):

ex -s -c 'w %~ | %s/`feedback`/`comments`/g' -c 'x' <file>

Объяснение:

  • w %~ сохраняет копию файла с ~ суффикс. Это удобно как резервное копирование в случае, если Вы портите что-то.
  • | разделитель команды.
  • % означает, "делают это действие с каждой строкой".
  • s/`feedback`/`comments`, поскольку Вы, вероятно, уже знаете, средства "текст замены, соответствующий regex `feedback` с `comments` на текущей строке".
  • g означает "глобальный", т.е. не останавливайтесь после первой замены относительно строки.
  • x сокращение от wq, т.е. это означает, пишут файл и выходят. Это должно быть отдельным, потому что иначе это зависнет, если там не будет идти ни в какое сравнение.
2
ответ дан 17 November 2019 в 13:44

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

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