Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Поиск и замена текста в нескольких файлах  (Прочитано 16720 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн ZwS

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1674
    • Просмотр профиля
Интересует вопрос поиска и замены текста в нескольких файлах. может кто подскажет скрипт/программу для таких операций? то что находит гугл подходить для замены одной строки, а нужно несколько сразу.
Dell Inspiron One 2330 | Intel+Radeon HD7650A | 8GB RAM | Ubuntu GNOME 17.10

Оффлайн Svertal

  • Активист
  • *
  • Сообщений: 893
  • КиберПанк
    • Просмотр профиля
Re: Поиск и замена текста в нескольких файлах
« Ответ #1 : 18 Декабря 2009, 02:46:28 »
Думаю как то так
sed -i "s/^текст_в_исходной_строке.*/новый_текст_строки/" *

Оффлайн alexander.pronin

  • Старожил
  • *
  • Сообщений: 2539
    • Просмотр профиля
Re: Поиск и замена текста в нескольких файлах
« Ответ #2 : 18 Декабря 2009, 08:31:05 »
На конце поставьте g, чтобы была глобальная замена.
sed "s/часы/трусы/g" файлы
У всех поменяем часы на трусы (выгодный бызнес). ;D

Оффлайн ZwS

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1674
    • Просмотр профиля
Re: Поиск и замена текста в нескольких файлах
« Ответ #3 : 18 Декабря 2009, 10:01:16 »
а если мне нужно убрать вот такой кусок кода из ~500 файлов
(Нажмите, чтобы показать/скрыть)
то как рекурсивно обойти каталоги и выполнить замену? sed сможет выполнить такую замену?
Dell Inspiron One 2330 | Intel+Radeon HD7650A | 8GB RAM | Ubuntu GNOME 17.10

Оффлайн alexander.pronin

  • Старожил
  • *
  • Сообщений: 2539
    • Просмотр профиля
Re: Поиск и замена текста в нескольких файлах
« Ответ #4 : 18 Декабря 2009, 10:09:33 »
find начальный_каталог -name шаблон | xargs sed ....
Если надо выводить не только на терминал, то надо результаты find записать в файл, а затем выбирая файлы построчно сделать замену и занести результаты в них же.
Что-то типа такого варианта.
#! /bin/sh
find начальный_каталог -name шаблон_файлов > ./tempfile
while read LINE
do
  cat $LINE | sed "s/часы/трусы/g"  > $LINE
done < ./tempfile
# зачистка
rm ./tempfile

Это в лоб. Можно сделать красивее и изящнее.
Кунфу надо совершествовать, чтобы стать мастером.(Ц)
« Последнее редактирование: 18 Декабря 2009, 10:29:55 от alexander.pronin »

Оффлайн ZwS

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1674
    • Просмотр профиля
Re: Поиск и замена текста в нескольких файлах
« Ответ #5 : 18 Декабря 2009, 10:41:34 »
спасибо, буду пробовать
Dell Inspiron One 2330 | Intel+Radeon HD7650A | 8GB RAM | Ubuntu GNOME 17.10

Оффлайн bujhm666

  • Участник
  • *
  • Сообщений: 185
  • Arch Linux
    • Просмотр профиля
Re: Поиск и замена текста в нескольких файлах
« Ответ #6 : 18 Декабря 2009, 10:57:39 »
rpl - консольная утилита для пакетного поиска/замены содержимого в файлах. Отличная штука.

Оффлайн ipadm

  • Новичок
  • *
  • Сообщений: 19
    • Просмотр профиля
Re: Поиск и замена текста в нескольких файлах
« Ответ #7 : 01 Января 2010, 17:46:16 »
Regexxer - визуальный редактор для быстрой замены :)

 

Страница сгенерирована за 0.058 секунд. Запросов: 24.