The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Удалить неуникальную часть файла."
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"Удалить неуникальную часть файла." 
Сообщение от anonymous Искать по авторуВ закладки(??) on 02-Фев-05, 12:47  (MSK)
задача такая: есть файл httpd.conf и надо написать скрипт (на shell, perl ) не важно , который бы удалял часть этого файла , а именно одну из секций
<VirtulaHost tralilia>
Servername
..
..
</VirtualHost>

проблема в том что некоторые части итих секции не являются уникальными , т.е . regex-ы не подойдут .

вобшем подскадите хотябы идею как это можно осушествить , а тто что-то ничего придумать не могу.

  Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "Удалить неуникальную часть файла." 
Сообщение от FastSoft emailИскать по авторуВ закладки(ok) on 02-Фев-05, 15:18  (MSK)
А ты составляй regexp не для чайтей секции, а для всей секции. При этом часть регекспа (Servername) можно сформировать динамически отдельно. Потом свежеиспеченный regexp целиком поступает на поиск и находит секцию с этим Servername.
  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "Удалить неуникальную часть файла." 
Сообщение от Xenu emailИскать по авторуВ закладки on 02-Фев-05, 17:07  (MSK)
как я это делаю:

$ echo "" | cat | ed apache2.conf <<EOF
> /^<VirtulaHost tralilia>/
> .,/^<\/VirtulaHost>/d
> w
> q
> EOF

$

только заголовок секции <VirtulaHost tralilia> должен быть уникальным, если нет то его надо сделать таковым выбором более правильного регулярного выражения, как было сказано в предидущем ответе, или добавлением каких-нибудь меток если файл находится под вашим контролем.

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "Удалить неуникальную часть файла." 
Сообщение от Xenu emailИскать по авторуВ закладки on 02-Фев-05, 17:33  (MSK)
дополнение.

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

http://www-106.ibm.com/developerworks/library/l-sed1.html
http://www-106.ibm.com/developerworks/library/l-sed2.html
http://www-106.ibm.com/developerworks/library/l-sed3.html

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

4. "Удалить неуникальную часть файла." 
Сообщение от Xenu emailИскать по авторуВ закладки on 02-Фев-05, 21:57  (MSK)
не заметил, что вопрос под рубрикой Perl поэтому и надавал рекомендаций про ed и sed
  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

5. "Удалить неуникальную часть файла." 
Сообщение от anonymous Искать по авторуВ закладки(??) on 03-Фев-05, 10:15  (MSK)
спасибо уже разобрался вот рабочий скрипт .

#!/usr/bin/perl

$metka="$ARGV[0]";
if ( $imetka eq "" ) {
print "no match  \n";
print "exit\n";
exit}

open (ht,"/var/chroot/apache/var/apache/httpd.conf") or die "error $!\n";
while ($a=<ht>) {
chomp $a;
$b.="$a\t";
}
close (ht);
open (ht1,">>/var/chroot/apache/var/apache/httpd.conf") or die "error $!\n";
$b=~s/##$metka#.*?##$metka#//g;
$b=~s/\t/\n/g;
print (ht1 "$b");

close (ht1);

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх


Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру