Произвести изменения одновременно в нескольких файлах не открывая их

Обновлено: 03.07.2024

Задачи редактирования часто поддаются структуризации: одно и то же изменение нужно проделывать неоднократно. В этой главе мы покажем несколько полезных способов повторения изменений.

26.1 Повторное выделение в Визуальном режиме

Визуальный режим может быть очень полезен для внесения изменений в любой последовательности строк. Выделенный текст, над которым будут производиться операции, у вас всегда на виду. Однако, для выделения требуется ввод команд с клавиатуры. Команда "gv" позволяет автоматически выделять раннее выделенную область заново. Это позволяет быстро выполнять над тем же самым текстом другие операции.

Предположим, у вас имеется несколько строк, в которых вам требуется изменить "2001" на "2002" и "2000" на "2001":

Для начала, изменим "2001" на "2002". Выберите необходимые строки в Визуальном режиме и введите команду:

Теперь, чтобы выбрать выделенный раннее текст, используйте команду "gv". Независимо от того, где находится курсор в данный момент, в Визуальном режиме будет выделен тот же самый фрагмент текста. Затем используйте команду ":s/2000/2001/g" для внесения второго исправления.

Эту операцию можно повторить несколько раз.

26.2 Сложение и вычитание

При изменении нескольких чисел часто имеется определённое смещение, на которое увеличиваются или уменьшаются числа, которые требуется изменить. В предыдущем примере мы увеличивали значение года на единицу. Вместо ввода команды для каждого года в тексте, можно использовать команду CTRL-A.

Например, введём шаблон для поиска года:

Теперь нажмём CTRL-A. Значение года будет увеличено на единицу:

Теперь перейдём к следующему году по команде "n" и нажмём "." для повторения последней команды CTRL-A ("." немного быстрее набирать). Команды "n" и "." можно повторять, пока в тексте не будут изменены все года.

Совет: включите опцию 'hlsearch', чтобы видеть перед собой соответствия в тексте, которые будут изменены.

Добавление другого числа, отличного от единицы, осуществляется вводом числовой приставки перед командой CTRL-A. Предположим, у нас есть список:

Подведите курсор к "1." и введите:

"1." меняется на "4.". И снова, можно пользоваться "." для повторения этого действия на других числах.

Ещё один пример:

Использование CTRL-A на этих числах приведёт к следующему результату:

Как это? 7 плюс один будет 10? Дело в том, что Vim воспринял "007" как восьмеричное число, поскольку число начинается с цифры ноль. Такое соглашение часто используется в программах на языке C. Если вы не хотите, чтобы ваши числа, начинающиеся с нуля, воспринимались как восьмеричные, используйте следующую настройку:

Команда CTRL-X выполняет вычитание похожим образом.

26.3 Внесение изменений в нескольких файлах

Допустим, у вас есть переменная "x_cnt" и вы хотите изменить её имя на "x_counter". Проблема в том, что эта переменная используется в нескольких файлах C. Покажем, как внести изменения во все необходимые файлы.

Поместите все требуемые файлы в список аргументов:

Теперь, все файлы C присутствуют в списке аргументов и Vim открыл для редактирования первый файл. Чтобы выполнить команду замены на всех файлах в списке аргументов, введите команду:

Команда ":argdo" имеет аргумент, который представляет собой другую команду. Эта команда будет выполнена на всех файлах в списке аргументов.

Команда замены, которую мы передали в качестве аргумента команде ":argdo" будет работать на всех строках. Она отыщет все появления слова "x_cnt" в тексте при помощи шаблона "\<x_cnt\>". Благодаря "\<" и "\>" в шаблоне, команда найдёт только слово "x_cnt", и оставит в покое слова вроде "px_cnt" или "x_cnt2".

"|" служит для разделения двух команд. Команда "update" запишет файл на диск только в том случае, если в нём есть изменения. Если в каком-либо файле не было замен "x_cnt" на "x_counter", то файл лишний раз сохраняться не будет.

Имеется также команда ":windo", которая выполняет команду, указанную в аргументе, на всех открытых окнах, а также ":bufdo", которая выполняется на всех буферах. Будьте осторожны с этой командой, поскольку у вас может находиться в списке буферов гораздо больше файлов, чем вы себе представляете. Пользуйтесь для просмотра списка буферов командой ":buffers" (или ":ls").

26.4 Использование Vim из сценария оболочки

Vim прекрасно справляется с задачами экранного редактирования текста с использованием команд Обычного режима. В то же время, для пакетной обработки команды Обычного режима не очень подходят; их сложно поместить в командный файл, который можно запускать по мере необходимости. Для этой цели лучше всего подходит режим Ex. Режим Ex предоставляет интерфейс командной строки для работы с редактором, и эти команды легко можно поместить в командный файл сценария оболочки. ("Команда Ex это просто другое название для команды, вводимой в командной строке, :-команды).

Для выполнения поставленной задачи вам потребуется ввести следующие команды Ex:

Поместите эти команды в файл "change.vim". Теперь, для запуска редактора в пакетном режиме, используйте сценарий оболочки:

Цикл for-done это конструкция командного языка оболочки sh, позволяющая в данном случае выполнять две команды между строками for и done с одновременным изменением значения переменной $file.

Команда "lpr -r tempfile" печатает получившийся в результате обработки Vim файл "tempfile" и удаляет его (на операцию удаления указывает аргумент -r).

ЧТЕНИЕ СО СТАНДАРТНОГО ВВОДА

Vim умеет читать текст со стандартного ввода. Поскольку обычно на стандартный ввод Vim подаются команды, то необходимо сказать редактору, что это будет именно текст. Для этого, вместо имени файла Vim передаётся аргумент "-":

Это позволяет вам редактировать вывод команды "ls", без необходимости предварительного сохранения текста в файл.

Если вы используете для чтения текста стандартный ввод, то можно также воспользоваться аргументом "-S" для запуска сценария Vim:

СЦЕНАРИИ КОМАНД ОБЫЧНОГО РЕЖИМА

Использовать команды Обычного режима в сценарии можно следующим образом:

Замечание: Значение "-s" зависит от того, используется ли оно совместно с ключом "-e" или без него. В данном случае "-s" указывает на необходимость чтения команд Обычного режима из указанного файла сценария. При использовании совместно с "-e" этот ключ заставляет Vim выполнять операции молча, имя файла сценария после "-s" при этом не указывается.

Команды сценария выполняются так, как вы их набрали. Не забывайте, что перенос строки будет интерпретироваться как нажатие <Enter>, что в Обычном режиме перемещает курсор к следующей строке.

Чтобы написать сценарий, вам нужно открыть файл и набрать необходимые команды. Возможно, вы столкнётесь с трудностями, поскольку от вас потребуется хорошо представить, какой будет результат выполнения введённых вами команд. Другой способ создания сценария -- записать требуемую последовательность команд при их выполнении вручную. Для этого запустите Vim с ключом "-w":

Vim сохранит все нажатые кнопки в файл "script". Если вы допустите небольшую ошибку, то сможете отредактировать файл сценария позднее.

Аргумент "-w" добавляет информацию о нажатых кнопках в существующий сценарий. Это полезно, если вы записываете необходимый сценарий по частям. Если же вам нужно начать запись сценария с самого начала, то используйте для этой цели ключ "-W". Содержимое существующего файла при этом будет перезаписано новыми командами.

При редактировании текстовых документов иногда возникает необходимость найти и заменить внутри них какой-нибудь фрагмент. Для большинства редакторов это не проблема, практически в любой подобной программе имеется функция поиска и замены, но что, если такую замену нужно выполнить в пакетном режиме? Представьте, что вам нужно заменить всего лишь одно слово, но в нескольких документах. Открывать каждый файл и производить правку занятие весьма утомительное и нерациональное, благо и с этой задачей умеют справляться текстовые редакторы. Правда, не все. Популярнейший офисный пакет Microsoft Office до сих пор не имеет внятных инструментов пакетной замены текстовых фрагментов, поэтому приходится прибегать к помощи сторонних утилит, с парочкой из которых мы сегодня познакомимся.

@Text Replacer

На вкладке «Текст и размещение» имеется четыре поля.

@Text Replacer

В поле «Имя» можно указать тип (формат) обрабатываемых файлов, в поле «Папка» – каталог с файлами, поля «Найти» и «Заменить на» служат для ввода искомого и заменяемого текста соответственно.

Настройки @Text Replacer

К сожалению, при тестировании в Windows 10 у нас возникли проблемы, @Text Replacer так и не смоглa ничего найти, возможно, потому что мы использовали неоригинальный пакет Word, а может быть по той причине, что программа не поддерживает работу с этой версией системы (поддержка Windows 10 не заявлена разработчиком).

Replace Genius

Replace Genius фото 1

Заполнив поля, нажмите F12 и кликните в открывшемся менеджере пресетов кнопку «Add».

Replace Genius фото 2

Добавив в список шаблон, можно приступать к самому поиску и замене. Нажмите на панели инструментов сверху кнопку «Batch», добавьте обрабатываемые документы Microsoft Office и укажите в окошке мастера каталог для сохранения результатов.

Replace Genius фото 3

Replace Genius фото 4

Также вы можете заменить исходники новыми файлами, но всё же будет лучше перестраховаться. После нажатия «OK» и «Start» программа внесет изменения в ваши документы согласно заданным параметрам.

Replace Genius фото 5

Replace Genius фото 6

Макросы

Макрос, похоже, старый, раз до сих пор представлен беткой, но работает неплохо и с последними версиями текстового процессора. Приложение представляет собой DOC-файл с полями для ввода искомого и замещающего текста и кнопкой «Пуск».

Макрос для пакетной замены текста в Word

При первом запуске нужно разрешить выполнение активного содержимого, что делать дальше, полагаем, догадаетесь сами. Макрос поддерживает замену текста в гиперссылках, а также поиск во вложенных каталогах и с учетом регистра.

Настройка поиска и замены

Дублирование файлов с сохранением исходника как в Replace Genius не предусмотрено, все сеансы записываются в текстовый лог.

На этом пока всё. Вероятно, есть и другие средства и способы поиска и пакетной замены текстового содержимого «офисных» документов, но и того, что мы здесь предложили для использования, должно вполне хватить.

Все привет, сегодня я вам расскажу про один из 3х способов, как массово заменить / удалить какие-либо ссылки или параметры в текстовых файлах.

Например: есть html файл, в котором нужно заменить все ссылки. Звучит просто? А если ссылок будет 500? Руками заниматься таким геморроем точно желания не будет.

Для WINDOWS пользователей существует отличный текстовый редактор Notepad++

Для пользователей macOS рекомендую редактор ATOM, работу с которым, я подробно описал в блоге.

Прямая замена:
– Открываем файл, и нажимаем ctrl+F

– В поле Find what вводим то, что нужно заменить

– В поле Raplace with вводим то, на что нужно произвести замену

– Жмем кнопку Replace All

– Проверям и сохраняем файл.

Массовая замена данных в файлах Текстовый редактор, Код, Регулярные выражения, Разработка, Notepad++, Atom, HTML, Лендинг

Массовая замена в файлах:

– Вкладка Find in files

– В поле Directory жмем три точки и выбираем категорию с файлами

– После замены жмем Replace in files

Вот и все, мы успешно освободили себе кучу времени и сил.

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

Надеюсь этот пост кому-то поможет.

Всем спасибо!

А зачем такие извраты? На вашем вебсервере не работают штатные sed, awk, grep?

>работу с которыми я очень подробно описал в этой статье.

Очень подробно, ага.


Wake up, Neo!

Wake up, Neo! Юмор, Frontend, Код, Разработка, Костыли, Быдлокодинг


Важно сохранять баланс

Важно сохранять баланс


Ответ на пост «1 из 3»

Ооооо, священные регулярки, сразу вспомнил ответ на вопрос на СО, который закреплен и помечен как (дальше будет мой корявый перевод)

Ответ на пост «1 из 3» Программирование, Разработка, Комиксы, IT юмор, Регулярные выражения, Ответ на пост, Длиннопост

Этот пост закреплен дабы избежать некорректных корректировок. Пост выглядит именно так как он и должен выглядеть - с содержанием нет никаких проблем. Пожалуйста не помечайте его никак, чтобы не привлекать наше внимание.

Собствено вопрос довольно прозаичен: (условно) "как парсить хтмл с помощью регулярок"

а вот и ответ (ух, поехали, время устроить челленж моему английскому)
некоторые части перевода скорее всего неверные, а часть - просто отсылки которые я не знаю, но скорее всего суть вы поймете :D

Ответ на пост «1 из 3» Программирование, Разработка, Комиксы, IT юмор, Регулярные выражения, Ответ на пост, Длиннопост

Невозможно распарсить [X]HTML с помощью регеса. Потому что ХТМЛ не может быть распарсен регексом.Регес - не та тулза, которая может быть использована для корректного парса ХТМЛа. Как я уже отвечал много раз в вопросах хтмл-и-регес, использование регеса не позволит процессить хтмл. Регулярки недостаточно утонченная тулза для понимания конструкций используемых в ХТМЛ. ХТМЛ не "регулярный" язык, тем самым он не может быть запарсен регулярками.. У регулярок нет возможности парсить ХТМЛ в имеющие смысл части. так много раз, но оно так и не дошло до меня. Даже улучшенные нерегулярные регулярные выражения используемые в Perl'e не справятся с этой задачей. Вы никогда не расколете меня. ХТМЛ - язык достаточной сложности, который не может быть распарсен регулярками. Даже Jon Skeet не сможет парсить ХТМЛ регулярками. Каждый раз когда вы пытаетесь распарсить ХТМЛ регулярками нечестивое дитя плачет кровью девственниц и русские хакеры взламывают твое веб приложение. Парсинг ХТМЛа регулярками призывает запятнанные души в мир живых. Хтмл и регулярки настолько же хорошая пара, как и "любовь, брак" и "ритуальное детоубийство". <Центр> больше не справляется, слишком поздно. Насильное использование регулярок и ХТМЛа в концептуальном пространстве расплавит твой разум в жижу. Если ты распарсишь ХТМЛ регексом то ты отдашься Им и их дьявольским путям, которые обрекут всех нас к нечеловеческому труду во имя Его кого невозможно назвать используя обычный человеческий язык, он грядёт. ХТМЛ-плюс-регулярки размозжит нервы разумности пока ты наблюдаешь за ними, твоя психика затухнет под натиском ужаса. Парсерсы-ХТМЛа-основанные-на-регексах это рак, который убивает Stackoverflow слишком поздно слишком поздно нас не спасти трансгрессия ребенка гарантирует что регекс поглотит всех живых существ (кроме ХТМЛ, который он не способен переварить, как говорили ранее) господь помоги нам как мы можем пережить это бедствие использование регекса для парсинга ХТМЛа обрекло на человечество на вечные ужасные пытки и дыры в безопасности использование регекса как тулзы для процессинга ХТМЛа дыру между этим миром и миром ужаса испорченных сущностей (как SGML сущности, только испорченнее) лишь мгновение мира регекс парсеров для ХТМЛА моментально перемещает сознание разработчика в мир нескончаемых криков, он грядет, ядовито-склизская зараза регулярок поглотит твой ХТМЛ парсер, приложение и всё существование вроде Visual Basic только хуже он грядёт он грядёт не борись он грядёт, его нечестивая аура разрушает всё сущее, ХТМЛ теги текут из твоих глаз как жидкость боли, песнь парсинга с помощью регулярных выражений заглушит голоса смертных из сферы я вижу это ты видишь это это прекрасно окончательное гашение лжи человечества ВСЁ ПОТЕРЯНО ВСЁ ПОТЕРЯНО пони он грядёт он грядет гной проникает всё МОЁ ЛИЦО МОЁ ЛИЦО неееЕЕЕттт НЕТ неТ остановить углы не реально ZALGO ЭТО ТОНИ-ПОНИ ОН ГРЯДЁТ

ФУХ, это было тяжело, там дофига опечаток, неточностей перевода, но я старался

Как найти и заменить слова в нескольких файлах

Что вы делаете, если вам нужно заменить одно слово в десятках или даже сотнях или тысячах текстовых файлов? Вы сохраняете спокойствие и загружаете Notepad ++ или Replace Text [Больше не доступно]. Эти две утилиты сделают работу за считанные секунды.

Эта дилемма распространена среди разработчиков и программистов. Представьте, что вы управляете проектом с сотнями или тысячами файлов. Когда имя продукта, которое появляется почти на каждой странице, изменяется, вы вряд ли сможете просмотреть каждую страницу, чтобы выполнить поиск и изменить название вручную. Нет, ты умнее этого.

Вы запускаете Google, вы находите эту статью и узнаете о решении, которое занимает всего несколько секунд.

Как редактировать несколько файлов навалом

Вы можете использовать Notepad ++ или специальный инструмент под названием «Заменить текст» для массового редактирования. ваших файлов.

Notepad ++

Во-первых, позвольте Notepad ++ найти слово во всех файлах, которые нужно отредактировать. Откройте Блокнот ++ и перейдите в « Поиск»> «Найти в файлах» … или нажмите сочетание клавиш CTRL + SHIFT + F. Это открывает меню «Найти в файлах».

В поле « Найти что» введите слово или фразу, которые нужно изменить. В разделе « Заменить на:» введите новое слово или фразу. Наконец, установите каталог: где находятся уязвимые файлы, чтобы Notepad ++ знал, где искать.

Как найти и заменить слова в нескольких файлах Блокнот Найти в файлах

Вы также можете использовать расширенные настройки, которые я описал ниже. Когда все установлено, нажмите « Найти все», если вам нужно дважды проверить совпадения, или « Заменить в файлах», если вы хотите, чтобы Notepad ++ немедленно применил изменения. В зависимости от количества файлов, которые ищет Notepad ++, это может занять несколько секунд.

Если вы пошли с Find All , вы получите список хитов. Удалите все файлы, которые вы не хотите редактировать, выбрав их и нажав клавишу DEL, затем щелкните правой кнопкой мыши остальные файлы и выберите « Открыть все» .

Теперь перейдите в Search> Replace или нажмите CTRL + H , чтобы запустить меню Replace. Здесь вы найдете опцию Заменить все во всех открытых документах .

Как найти и заменить слова в нескольких файлах Замените блокнот

Опять же, вы можете сделать несколько дополнительных настроек, как описано ниже.

Расширенный поиск и замена настроек в Notepad ++

В разделе « Найти в файлах» вы можете добавить фильтры для поиска только в определенных типах файлов. Например, добавьте * .doc для поиска только в файлах DOC. Кроме того, вы можете искать файлы с определенным именем, независимо от типа файла. Добавьте *. * Для поиска любого имени файла и типа.

Когда вы выбираете каталог с подпапками, установите флажок Во всех подпапках и В скрытых папках, чтобы искать их тоже. Вы также можете установить флажок « Совпадение всего слова» , чтобы случайно не редактировать частичное совпадение.

Режим поиска в меню «Найти в файлах» и «Заменить» позволяет выполнять расширенный поиск и замену. Выберите Extended, если вы используете расширения, например, чтобы заменить символ новой строкой (\ n). Выберите Регулярное выражение, если вы используете операторы для поиска и замены всех подходящих слов или фраз. Вы можете придерживаться Normal, если вы просто заменяете текст текстом.

Заменить текст [больше не доступно]

С помощью «Заменить текст» вы можете настроить группу замены, чтобы добавить несколько файлов и / или каталогов и несколько замен.

Для начала создайте новую группу. Перейдите в « Заменить»> «Добавить группу» и дайте имя своей группе

Щелкните правой кнопкой мыши свою группу и выберите « Добавить файл (ы)…», чтобы добавить файлы и / или папки, которые вы хотите редактировать. В окне «Свойства файла / папки» выберите тип источника , т. Е. Отдельный файл или папку, затем выберите « Путь к исходному файлу / папке» . Если вы решите добавить папку, вы также можете включать и исключать типы файлов, добавляя их в строки « Включить фильтр файлов» или « Исключить фильтр файлов» . Нажмите OK, когда вы закончите.

Как найти и заменить слова в нескольких файлах Свойства папки «Заменить текстовые файлы»

Чтобы добавить несколько файлов или папок, повторите описанный выше шаг.

Лучшая функция Replace Text в том, что вы можете выбрать пункт назначения, отличный от исходного местоположения. В свойствах файла / папки перейдите на вкладку « Место назначения » и выберите нужный путь к файлу / папке для пункта назначения .

Теперь, когда вы создали свою группу, пришло время определить ваши замены. Выберите свою группу и перейдите в « Заменить»> «Найти / заменить сетку»> «Расширенное редактирование»… Теперь вы можете добавить текст для поиска и « Заменить текст» . Обязательно загляните в раскрывающееся меню внизу, чтобы настроить параметры поиска и замены.

Как найти и заменить слова в нескольких файлах Заменить текст Advanced Edit

Как и в случае с Notepad ++, вы можете использовать строки расширенного поиска и операторы. В отличие от Notepad ++, вы можете добавить столько экземпляров поиска и замены, сколько захотите, и Replace Text будет проходить через все из них при запуске процесса.

Чтобы сделать замены, перейдите в « Замена»> «Начать замену» или нажмите CTRL + R.

Об инструментах

Что такое Блокнот ++?

Notepad ++ — это бесплатный редактор исходного кода и альтернатива Windows Notepad. Он выпущен на условиях GNU General Public License , что делает его открытым исходным инструмент.

Кроме того, Notepad ++ — это легковесное приложение, которое сохраняет ресурсы, что делает его полезным для окружающей среды:

Оптимизируя как можно больше процедур без потери удобства, Notepad ++ пытается сократить выбросы углекислого газа в мире. При использовании меньшей мощности процессора ПК может снизить скорость и снизить энергопотребление, что приведет к более экологичной среде.

Вот небольшой набор функций Notepad ++, которые делают его идеальным инструментом для написания и редактирования (код):

Автоматическая и настраиваемая подсветка и свертывание синтаксиса кодирования. Поддержка поиска и замены Perl-совместимых регулярных выражений (PCRE). Автозаполнение, которое включает завершение слова, завершение функции и подсказку параметров функции. Интерфейс с вкладками, который позволяет вам работать с несколькими документами параллельно. Редактирование нескольких строк одновременно, используя либо CTRL + выделение мыши, либо редактирование столбцов.

Что такое заменить текст?

Заменить текст намного проще, чем Notepad ++. Это делает одну работу: замена текста. Ecobyte, компания, занимающаяся заменой текста, помнит о ее влиянии. Следовательно, программное обеспечение с указанием причины поставляется с необычным лицензионным соглашением:

Как найти и заменить слова в нескольких файлах. EULA 670x452.

К сожалению, Replace Text больше не поддерживается, и в Windows 10 отсутствует файл справки. Я все равно рассмотрел его, поскольку он предлагает более продвинутые функции, чем Notepad ++ для этого конкретного приложения.

Поиск и замена Made Easy

Одна из двух утилит выше должна сделать эту работу за вас. Если у вас есть только простое задание поиска и замены или если полезны дополнительные функции Notepad ++, попробуйте. Если вам нужно отредактировать не только несколько файлов , но также нужно сделать несколько различных замен, стоит посмотреть на Replace Text.

Какой из них вы выбрали, и он работал как предписано? Нашли ли вы другие инструменты, которые могут искать и заменять текст? Дайте нам знать в комментариях ниже!

Читайте также: