Найти и заменить блоки отформатированного кода в нескольких файлах HTML на сервере Linux

721
RandyS

Многие из моих сайтов состоят из сотен HTML-файлов, и мне часто приходится вносить изменения с помощью «Найти и заменить» во всех файлах одновременно. Для этой цели я использую комбинацию FTP, файлового менеджера cPanel, Notepad ++ и Microsoft Expression Web и хотела бы узнать, есть ли более эффективный способ сделать это.

Я использую Notepad ++ для самых простых поисков «найти и заменить» и для поиска по регулярному выражению. Однако Notepad ++ не позволяет вставлять несколько строк текста, поэтому я вынужден использовать Expression Web для замены более крупных блоков кода, особенно если в нем много пробелов и разрывов строк. К сожалению, Expression Web не самая быстрая вещь в мире, и комбинация этого и необходимость переключения между программами несколько замедляют мой рабочий процесс.

Я знаю, что люди используют grep через putty, но опять же, это будет работать только с простыми заменами, а не с большими многострочными блоками, которые вам просто нужно скопировать и вставить. Я хотел бы знать две вещи:

1) Что является хорошей заменой для Expression Web для «поиска и замены» больших блоков текста или кода в Windows?

2) Есть ли способ запустить этот процесс с файлами, которые все еще находятся на сервере? Если нет, возможно ли хотя бы уменьшить количество шагов? Сейчас он делает слишком много шагов:

  1. Создание резервной копии сайта в cPanel
  2. Загрузка и распаковка резервной копии
  3. Редактирование файлов
  4. Архивирование отредактированных файлов в один архив
  5. Загрузка архива через FTP
  6. Возвращаясь к cPanel, чтобы удалить старые файлы и извлечь новый архив.
0
Сделайте это через ssh: подготовьте команду `sed` /` awk` / `perl` и затем отправьте ее на каждый сервер через ssh. Вы даже можете написать сценарий целиком, чтобы он автоматически проходил через все ваши серверы, или использовать ansible с файлом конфигурации, в котором перечислены все ваши серверы. Вы можете выполнить резервное копирование прямо перед заменой: `ssh«Дегтя ...; СЕПГ ... ''. simlev 6 лет назад 0

1 ответ на вопрос

0
Pavel Bernshtam

Вы можете искать и заменять многострочный текст в Notepad ++, используя \ n в качестве разделителя строк

И вы можете использовать sed для поиска и замены многострочного текста: https://unix.stackexchange.com/questions/26284/how-can-i-use-sed-to-replace-a-multi-line-string

Вводить несколько разделителей вручную для целых абзацев форматированного текста? Вместо копирования и вставки? Возможно, мне понадобится до следующего столетия, чтобы закончить все мои проекты, если я сделаю это таким образом. RandyS 8 лет назад 0

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