Меню Рубрики

Linux рекурсивная замена текста в файлах

linux-notes.org

Недавно столкнулся с проблемой, мне нужно было найти определенные слова в файлах и заменить их на нужный мне текст. Немного поискав в интернете, я нашел как это сделать, по этому решил записать заметку «Поиск и замена слов в файлах linux», пригодится как мне так и другим пользователям. Это можно сделать командой find и grep с некоторыми параметрами.

Простой поиск с использованием grep:

Поиск и замена текста в файлах:

Удаление определенного символа из файлов

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

Как заменить слово в файлах при рекурсивном поиске Linux?

Этой строкой мы ищем во всех файлах с разрешением *.py от текущей директории строку text_1 и заменяя ее наtext_2, так же можно использовать regexp выражения.

Еще примеры

Для начала делаем поиск по фразе которая нам необходима, нам покажет все файлы и в каких строках содержится данная фраза:

или для конкретных файлов:

Выполнить замену можно еще следующим образом:

Допустим, Вам необходимо выполнить замену целой строки ( закомментировать какую либо функцию, добавив // перед самой функцией), то можно это сделать:

Экранируем спец символы и заменяем на любую другую строку, для этого:

Данная команда заменит одну строку на другую во всех файлах.

Упрощенная версия ее:

Можно удалить многострочное содержание текста который находиться, например между //###==### и //###==###

То чтобы удалить все строки кода между данными комментариями, выполните:

Я делал сканирование maldet и нашел много вредоносного кода, по этому, я удалил его так:

Как заменить всю строку на другую? Та вот так можно:

Или тоже самое, но через переменные:

-===Пример===-

Предположим, имеется файл и в нем находится:

Но по заданию, нужно чтобы было — Three.Two.One

Для этого, выполним:

PS: О долбанном SED-е я расскажу очень не скоро, он меня реально бесит и злит. Кто ее придумал, реальный сука ДЖЕДАЙ 😀

Делаем замену другим способом:

ПРИМЕЧАНИЕ! Утилиту rpl необходимо установить.

Я попозже постараюсь привести еще примеров и рассказать о утилите в своей новой статье.

Когда не удобно искать файлы в консольном режиме и есть GUI интерфейс, то можно воспользоваться утилитой regexxer.
Debian/Ubuntu/Mint:

CentOS/RedHat/Fedora:

Очень простая и хорошая утилита, я сам ею пользовался и тестировал на своей виртуальной машине на Debian.

На этом моя короткая заметка «Поиск и замена слов в файлах linux» завершена и готова к использованию.

Источник

Рекурсивная замена текста в файлах

Интересует графическая программа для масовой замены текста в большом к-ве файлов.

Желательно программа наподобие этой http://tr.infortech.ru/ только чтобы еще присутствовала функция заменить «от» и «до» было бы здорово.

Знаю что многие начнут плеваться мол через командную строку делай, я бы с радостью, но заменять нужно много и не просто слов а блоков кода в html файлах вида

var js, fjs = d.getElementsByTagName(s)[0];

js = d.createElement(s); js.id = id;

>(document, ‘script’, ‘facebook-jssdk’));*/ ———-

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

Буду признателен за совет. Всем спасибо.

Знаю что многие начнут плеваться мол через командную строку делай, я бы с радостью, но заменять нужно много и не просто слов а блоков кода

Поэтому и удобнее в терминале это. Делаешь словарь (json) вида что_заменить:на_что_заменить, пишешь скрипт, который для каждой пары рекурсивно осуществляет замену в файлах с помощью find и sed.

Я новичок в этом можно поподробней как это сделать или где почитать как это можно сделать? ну или может есть готовое решение. Было бы здорово, как я понял, сделать скрипт который будет выполнять замену, и мне только подставлять в файл значение. Это будет работать для разных кодировок файлов а именно ANSI и UTF-8?

Адаптируй под свои нужды.

1. Сначала сделай бекап. 2. Чем трахаться с седом (как тебе советовали), имхо, проще на перле скрипт написать. Или уж на питоне.

Скрипт написать это пока не в моих силах, потому ищу готовое решение.

Многострочные шаблоны? Удачи.

Два чая этому товарищу

Интересно, какой смысл ТС вкладывает в слово «рекурсивная»

У тебя есть задача, в решении которой ты заинтересован. Это отличный мотиватор, причина и повод изучить что-то новое. Вот тебе перловая рыба:

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

Скрипт написать это пока не в моих силах…

При таком настрое сил у тебя никогда не будет.

Спасибо. Буду пытаться

При выполнении Вашего скрипта выдает ошибку

Can’t locate Path/Tiny.pm in @INC (you may need to install the Path::Tiny module) (@INC contains: /Library/Perl/5.18/darwin-thread-multi-2level /Library/Perl/5.18 /Network/Library/Perl/5.18/darwin-thread-multi-2level /Network/Library/Perl/5.18 /Library/Perl/Updates/5.18.2 /System/Library/Perl/5.18/darwin-thread-multi-2level /System/Library/Perl/5.18 /System/Library/Perl/Extras/5.18/darwin-thread-multi-2level /System/Library/Perl/Extras/5.18 .) at /Users/nicolasik/Documents/reply.pl line 5.
BEGIN failed—compilation aborted at /Users/nicolasik/Documents/reply.pl line 5.

Но на сайте perl.org пишет что у меня уже есть perl

Тред не читал,шапку не читал

в вашем случае ошибка

find: -readable: unknown primary or operator

Источник

ИТ База знаний

Полезно

— Узнать IP — адрес компьютера в интернете

— Онлайн генератор устойчивых паролей

— Онлайн калькулятор подсетей

— Калькулятор инсталляции IP — АТС Asterisk

— Руководство администратора FreePBX на русском языке

— Руководство администратора Cisco UCM/CME на русском языке

— Руководство администратора по Linux/Unix

Навигация

Серверные решения

Телефония

FreePBX и Asterisk

Настройка программных телефонов

Корпоративные сети

Протоколы и стандарты

Популярное и похожее

15 примеров команды PING для диагностики сети

15 примеров CURL в Linux

Руководство по команде grep в Linux

Полное руководство по командам Linux

Как создавать и выбирать базы данных MySQL в Linux

Смотрим открытые порты Linux

rdiff: инкрементальное резервное копирование

Grandstream GXW4224

Еженедельный дайджест

Рекурсивно найти слово в файлах и папках Linux

Дистрибутив Linux, несмотря на версию и вид, имеет множество графических оболочек, которые позволяют искать файлы. Большинство из их них позволяют искать сами файлы, но, к сожалению, они редко позволяют искать по содержимому. А особенно рекурсивно. В статье покажем два способа того, как можно рекурсивно найти файлы, которые содержат ту или иную фразу. Поиск будет осуществлен по папкам и директориям внутри этих папок.

Найти фразу в файлах рекурсивно через консоль

Все просто. Открываем серверную консоль, подключившись по SSH. А далее, вводим команду:

Например, команда может выглядеть вот так:

Команда найдет и выведет все файлы, которые содержат фразу merionet в директории /home/user/merion и во всех директориях, внутри этой папки. Мы используем следующие ключи:

  • -i — игнорировать регистра текста (большие или маленькие буквы);
  • -R — рекурсивно искать файлы в сабдиректориях;
  • -I — показывать названия файлов, вместо их содержимого;

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

  • -n — показать номер строки, в которой находится фраза;
  • -w — показать место, где слово попадается;

Поиск слова через Midnight Commander

Так же, в консоли сервера, дайте команду:

Эта команда запустит Midnight Commander. Кстати, если он у вас не установлен, его можно просто установить через yum:

Открыв mc, во вкладке Command выберите Find File и заполните поисковую форму как показано ниже:

  • Start at: — директория, где нужно осуществлять поиск;
  • File name: — маска поиска. Например, искать только в файлах расширения txt будет — *.txt;
  • Content — сама фраза;

Нажимаем OK и получаем результат:

Было полезно?

Почему?

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

😍 Полезные IT – статьи от экспертов раз в неделю у вас в почте. Укажите свою дату рождения и мы не забудем поздравить вас.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

  • Как поменять ядро mac os
  • Как поменять цвет папок в mac os
  • Как поменять сочетание клавиш для смены языка mac os sierra
  • Как поменять переключение языка в mac os
  • Как поменять пароль mac os