Страница 1 из 1
perl регулярка для многострочной замены
Добавлено: 2014-07-24 14:02:11
time12345
Люди добрррррые подскажите, вот например нужно мне с командной строки произвести замену
куда тут m правильно влепить? вместо s что-то не работает
Код: Выделить всё
perl -e 's/\sometextatbegin(.){1,1000}sometext(.){1,1000}sometextatend//mg' -pi $1
Как сделать так чтобы оно в (.) переводы строки тоже всчитывало?
Re: perl регулярка для многострочной замены
Добавлено: 2014-10-16 21:26:16
Alex Keda
я даже не понимаю что оно делает
)
Re: perl регулярка для многострочной замены
Добавлено: 2014-10-16 21:28:56
Bayerische
Типа sed, думаю.
Re: perl регулярка для многострочной замены
Добавлено: 2014-11-19 20:58:36
zg
time12345 писал(а):Как сделать так чтобы оно в (.) переводы строки тоже всчитывало?
Тут шаблон нужен типа такого [\s\S]+ В подмножесто точки не входит перевод строки.
Re: perl регулярка для многострочной замены
Добавлено: 2014-12-01 18:09:55
time12345
а вы попробуйте. у вас работает? у меня ничего не помогало.
Re: perl регулярка для многострочной замены
Добавлено: 2014-12-02 19:29:45
zg
time12345 писал(а):а вы попробуйте. у вас работает? у меня ничего не помогало.
у меня работает
Код: Выделить всё
#!/usr/bin/perl -w
$string = "hello
world";
if ( $string =~ /([\s\S]+)/ )
{
print $1, "\n";
}
Re: perl регулярка для многострочной замены
Добавлено: 2014-12-06 19:35:17
time12345
нееееееееет, вы именно создайте отдельный текстовый файл многострочный и попробуйте перлом в нём произвести замену с командной строки.
Re: perl регулярка для многострочной замены
Добавлено: 2014-12-08 19:51:19
zg
честно говоря не понимаю, почему тут нужно использовать именно перл, но пжалста, всё работает:
Код: Выделить всё
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]+
Re: perl регулярка для многострочной замены
Добавлено: 2014-12-16 20:22:37
time12345
а что, у вас есть варианты попроще перла?
вы попробуйте именно способом как в первом посте, создайте заранее файл 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
но будет ли он работать?)) проверьте))
Re: perl регулярка для многострочной замены
Добавлено: 2014-12-22 19:07:50
zg
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 писал(а):но будет ли он работать?)) проверьте))
у меня будет.