From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: From: =?koi8-r?Q?=22?=Genix=?koi8-r?Q?=22=20?= To: sin.a@freeline.ru, =?koi8-r?Q?=22?=Saratov Linux User Group Maillist=?koi8-r?Q?=22=20?= Subject: Re: [Sarlug] serach & replace Mime-Version: 1.0 X-Mailer: mPOP Web-Mail 2.19 X-Originating-IP: unknown via proxy [217.23.76.38] Date: Fri, 15 Aug 2003 14:13:05 +0400 In-Reply-To: <200308151326.34347.sin.a@freeline.ru> Content-Type: text/plain; charset=koi8-r Content-Transfer-Encoding: 8bit Message-Id: Cc: X-BeenThere: sarlug@lug.ru X-Mailman-Version: 2.1.2 Precedence: list Reply-To: =?koi8-r?Q?=22?=Genix=?koi8-r?Q?=22=20?= , Saratov Linux User Group Maillist List-Id: Saratov Linux User Group Maillist List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 15 Aug 2003 10:09:09 -0000 Archived-At: List-Archive: List-Post: > Люди добрые, помогите, кто может... > > Есть большое количество файлов, их нужно просмотреть, и заменить "выражение1" > на "выражение2". В "Linux Gazette на русском" недавно был Однострочник > месяца на Perl, но разобратся с этим - я, увы, не смог :( . grep это нашел (в > количестве - 140шт.), а с автоматической заменой - трудности... > > В принципе строчку можно просто удалить, если html переживет без > > > Сайт отзеркалировался, но некоторые файлы оказались немного битыми (защита, > что-ли у них такая?), вручную поправить можно, но материала уж больно > много... (знаю, что есть люди, которые уже ждут результата:) Простой скрипт, который делает замену text1 на text2 в файле, поданом на вход выглядит так: #!/usr/bin/perl while (<>) { $_ =~ s/text1/text2/; print; } Вывод идет на stdout. доделать его для многих файлов не проблема. легче всего на bash'е складывать вывод во временный файл и потом делать mv. Эот в случае если с перлом вааще не охота замрачиваться. Можно и на перле -- если есть желание возможность. В твоем случае (поиск должен быть рекурсивным?) я бы смотрел в сторону find /dir -type f -name "*.html" -exec replace.pl {}; (сравни с маном мог что-то забыть) В любом случае пиши -- что-нить придумаем From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: From: =?koi8-r?Q?=22?=Genix=?koi8-r?Q?=22=20?= To: sin.a@freeline.ru, =?koi8-r?Q?=22?=Saratov Linux User Group Maillist=?koi8-r?Q?=22=20?= Subject: Re: [Sarlug] serach & replace Mime-Version: 1.0 X-Mailer: mPOP Web-Mail 2.19 X-Originating-IP: unknown via proxy [217.23.76.38] In-Reply-To: <200308151326.34347.sin.a@freeline.ru> Content-Type: text/plain; charset=koi8-r Content-Transfer-Encoding: 8bit Message-ID: Cc: X-BeenThere: sarlug@lug.ru X-Mailman-Version: 2.1.2 Precedence: list Reply-To: =?koi8-r?Q?=22?=Genix=?koi8-r?Q?=22=20?= , Saratov Linux User Group Maillist List-Id: Saratov Linux User Group Maillist List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 15 Aug 2003 10:09:09 -0000 Date: Fri, 15 Aug 2003 10:09:09 -0000 X-Original-Date: Fri, 15 Aug 2003 14:13:05 +0400 X-List-Received-Date: Fri, 15 Aug 2003 10:09:09 -0000 Message-ID: <20030815100909.4qwKxGUjBHAaVzfn27WdJUzK1zEMFlVNlV7NgegzNd8@z> Archived-At: List-Archive: List-Post: > Люди добрые, помогите, кто может... > > Есть большое количество файлов, их нужно просмотреть, и заменить "выражение1" > на "выражение2". В "Linux Gazette на русском" недавно был Однострочник > месяца на Perl, но разобратся с этим - я, увы, не смог :( . grep это нашел (в > количестве - 140шт.), а с автоматической заменой - трудности... > > В принципе строчку можно просто удалить, если html переживет без > > > Сайт отзеркалировался, но некоторые файлы оказались немного битыми (защита, > что-ли у них такая?), вручную поправить можно, но материала уж больно > много... (знаю, что есть люди, которые уже ждут результата:) Простой скрипт, который делает замену text1 на text2 в файле, поданом на вход выглядит так: #!/usr/bin/perl while (<>) { $_ =~ s/text1/text2/; print; } Вывод идет на stdout. доделать его для многих файлов не проблема. легче всего на bash'е складывать вывод во временный файл и потом делать mv. Эот в случае если с перлом вааще не охота замрачиваться. Можно и на перле -- если есть желание возможность. В твоем случае (поиск должен быть рекурсивным?) я бы смотрел в сторону find /dir -type f -name "*.html" -exec replace.pl {}; (сравни с маном мог что-то забыть) В любом случае пиши -- что-нить придумаем