perl регулярка для многострочной замены

И всё прочее, что касается HTML
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
time12345
сержант
Сообщения: 224
Зарегистрирован: 2011-09-21 1:23:43

perl регулярка для многострочной замены

Непрочитанное сообщение time12345 » 2014-07-24 14:02:11

Люди добрррррые подскажите, вот например нужно мне с командной строки произвести замену

куда тут m правильно влепить? вместо s что-то не работает

Код: Выделить всё

perl -e 's/\sometextatbegin(.){1,1000}sometext(.){1,1000}sometextatend//mg' -pi $1
Как сделать так чтобы оно в (.) переводы строки тоже всчитывало?

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35454
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: perl регулярка для многострочной замены

Непрочитанное сообщение Alex Keda » 2014-10-16 21:26:16

я даже не понимаю что оно делает =))
Убей их всех! Бог потом рассортирует...

Bayerische
капитан
Сообщения: 1820
Зарегистрирован: 2010-12-25 20:41:50
Откуда: Хлебная столица

Re: perl регулярка для многострочной замены

Непрочитанное сообщение Bayerische » 2014-10-16 21:28:56

Типа sed, думаю.

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: perl регулярка для многострочной замены

Непрочитанное сообщение zg » 2014-11-19 20:58:36

time12345 писал(а):Как сделать так чтобы оно в (.) переводы строки тоже всчитывало?
Тут шаблон нужен типа такого [\s\S]+ В подмножесто точки не входит перевод строки.

time12345
сержант
Сообщения: 224
Зарегистрирован: 2011-09-21 1:23:43

Re: perl регулярка для многострочной замены

Непрочитанное сообщение time12345 » 2014-12-01 18:09:55

а вы попробуйте. у вас работает? у меня ничего не помогало.

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: perl регулярка для многострочной замены

Непрочитанное сообщение zg » 2014-12-02 19:29:45

time12345 писал(а):а вы попробуйте. у вас работает? у меня ничего не помогало.
у меня работает

Код: Выделить всё

#!/usr/bin/perl -w

$string = "hello
world";

if ( $string =~ /([\s\S]+)/ )
{
    print $1, "\n";
} 

Код: Выделить всё

% ./1.pl
hello
world

time12345
сержант
Сообщения: 224
Зарегистрирован: 2011-09-21 1:23:43

Re: perl регулярка для многострочной замены

Непрочитанное сообщение time12345 » 2014-12-06 19:35:17

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

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: perl регулярка для многострочной замены

Непрочитанное сообщение zg » 2014-12-08 19:51:19

честно говоря не понимаю, почему тут нужно использовать именно перл, но пжалста, всё работает:

Код: Выделить всё

home% echo -e "1\n2\n2.5\n3" | perl -np0e 's/(1)[\s]+(3)/$1foo$2/' 
1
2
2.5
3
home% echo -e "1\n2\n2.5\n3" | perl -np0e 's/(1)[\S]+(3)/$1foo$2/'
1
2
2.5
3
home% echo -e "1\n2\n2.5\n3" | perl -np0e 's/(1)[\s\S]+(3)/$1foo$2/'
1foo3
как я и писал
zg писал(а):Тут шаблон нужен типа такого [\s\S]+

time12345
сержант
Сообщения: 224
Зарегистрирован: 2011-09-21 1:23:43

Re: perl регулярка для многострочной замены

Непрочитанное сообщение time12345 » 2014-12-16 20:22:37

а что, у вас есть варианты попроще перла?

вы попробуйте именно способом как в первом посте, создайте заранее файл file.txe и произведите в нём замену...

file.txt

Код: Выделить всё

sometextatbegin
asdfasdf asdfads fsdaf ads fdafs 
sometextatend

asd fasd fdsa fsdaaasdfadsfdasfsdafadsdasfdasfdsafdas fdasfdas fdas fdasf 
вот здесь, например, нужно

Код: Выделить всё

sometextatbegin
asdfasdf asdfads fsdaf ads fdafs 
sometextatend
заменить на пустую строку

я так понял вы предлагаете такой вариант

Код: Выделить всё

perl -e 's/\sometextatbegin([\s\S.]){1,1000}sometextatend//mg' -pi file.txt
но будет ли он работать?)) проверьте))

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: perl регулярка для многострочной замены

Непрочитанное сообщение zg » 2014-12-22 19:07:50

time12345 писал(а):а что, у вас есть варианты попроще перла?
конечно есть

Код: Выделить всё

home% cat 1.txt                                         
sometextatbegin
asdfasdf asdfads fsdaf ads fdafs
sometextatend

asd fasd fdsa fsdaaasdfadsfdasfsdafadsdasfdasfdsafdas fdasfdas fdas fdasf 
home% sed -z 's/sometextatbegin.*sometextatend//g' 1.txt


asd fasd fdsa fsdaaasdfadsfdasfsdafadsdasfdasfdsafdas fdasfdas fdas fdasf 
home% 
time12345 писал(а):вы попробуйте именно способом как в первом посте
sed тоже умеет делать замены в файлах и бэкапы.
time12345 писал(а):но будет ли он работать?)) проверьте))
у меня будет.