LINUX.ORG.RU

single line mode в perl regex

 ,


0

2

Привет!

Не могу понять почему не срабатывает

perl -i -e 's/(webapi-prod.+?)(server)/\1#\2/s' stream.conf

На

upstream webapi-prod {
    least_conn;
    server api11:8084 weight=1 fail_timeout=10;
}
 

Пишу использую тот же регексп в питоне и все ок — server комментится.


Ответ на: комментарий от anonymous

Если чЁ я не перловик. :)
Так-что скорее всего можно проще.

anonymous
()
Ответ на: комментарий от anonymous

Perl reads the input file a line at a time, making the substitution, and then writing the results back to a new file

Понял, а как перлу весь файл скормить тогда?

ingol
() автор топика

Все, раскурил

perl -0777 -i -pe 's/(webapi-prod.+?)(server)/\1#\2/s' stream.conf

ingol
() автор топика
Ответ на: комментарий от KennyMinigun

Знак вопроса после плюса означает «возьми хоть один, но как можно меньше». То есть, инвертирует жадность плюса.

$ perl -e '$a = "abbccdd"; $a =~ s/b+//; print "$a\n";'
accdd
$ perl -e '$a = "abbccdd"; $a =~ s/b+?//; print "$a\n";'
abccdd
anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.