|
|
ru.unix.bsd- RU.UNIX.BSD ------------------------------------------------------------------ From : Dmytro Rud 2:5020/400 01 Nov 2002 19:43:02 To : "Alex V. Litovchenko" Subject : Re: Изменить в дереве файлов в подшаблоне текстовый блок -------------------------------------------------------------------------------- "Alex V. Litovchenko" <avl@partner.donetsk.ua> writes: > Подскажите, как мне в дереве файлов заменить подстроку например мне > нужно в проекте в каталоге (с подкаталогами) изменить в о всех > файлах *.c строку 'From' на строку 'To' если можно реально > работающий пример. > man find и man awk ясности не внес > строка может также быть и объемным текстом с множественными > переводами строк. поэтому лучше если скрипт бкдет From и To брать из > соответствующих файлов Я так понял, у тебя фактически две разные задачи: 1. Замена отдельных слов 2. Замена многострочных фрагментов текста Замена отдельных слов делается примерно так (подразумевается, что мы используем bash/sh, и корневой каталог иерархии называется root): for i in `find root -name *.c`; do sed -e s/From/To/g -i .ORIG $i; done Hасчёт замены фрагментов: если подлежащие замене фрагменты одинаковы во всех файлах с точностью до количества пробелов, то попробуй сделать следующее: внеси изменения вручную в одном из файлов, а потом diff -B -b filename.c.orig filename.c > diff1 В зависимости от жалаемого результата можешь поиграться с параметрами diff'а (man diff, вестимо...). После этого снова идём циклом: for i in `find root -name *.c`; do patch $i diff1; done Также очевидна возможность реализации тех же функций на чём-нибудь более приятном типа Perl'а или Python'а... -- rnd. --- ifmail v.2.15dev5 * Origin: Otto-von-Guericke-Universitaet Magdeburg, FIN (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.unix.bsd/32636365fdbf5.html, оценка из 5, голосов 10
|