The OpenNET Project / Index page

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

форумы  правила/FAQ  поиск  регистрация  вход/выход  слежка  RSS
"Perl и символ $"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Программирование под UNIX (Perl)
Изначальное сообщение [ Отслеживать ]

"Perl и символ $"  +/
Сообщение от Перспективный on 12-Сен-17, 18:57 
Привет, у меня не получается замена с символом $ на perl 5.26.0

вот так я делаю на sed
echo "aa bb$ cc"|sed -E 's|\S+\$|XXX|g'
aa XXX cc

а вот на perl
perl -E 'my $p="aa bb$ cc"; $p =~ s/\S+\$/XXX/g;  say "$p"'
aa bb

варианты с \Q \E не работают тоже. Как тут правильно делается?

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по ответам | RSS]

1. "Perl и символ $"  +/
Сообщение от ыы on 12-Сен-17, 23:45 
> Привет, у меня не получается замена с символом $ на perl 5.26.0
> вот так я делаю на sed
> echo "aa bb$ cc"|sed -E 's|\S+\$|XXX|g'
> aa XXX cc
> а вот на perl
> perl -E 'my $p="aa bb$ cc"; $p =~ s/\S+\$/XXX/g;  say "$p"'
> aa bb
> варианты с \Q \E не работают тоже. Как тут правильно делается?

Правильно очевидно - не использовать двойные кавычки там где вы не хотите чтобы $ воспринимался как служебный символ.
Либо надо так "aa bb\$ cc" либо так 'aa bb$ cc'

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Perl и символ $"  +/
Сообщение от Перспективный on 13-Сен-17, 05:41 
> Либо надо так "aa bb\$ cc"

Спасибо так работает, но я получаю данные без экранирования, и меня конечно интересует вариант
> либо так 'aa bb$ cc'

но не работает
perl -E 'my $p='aa bb$ cc'; $p =~ s/S+\$/XXX/g;  say "$p"'
<ничего>


Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "Perl и символ $"  +/
Сообщение от ЫЫ on 13-Сен-17, 10:52 
>> Либо надо так "aa bb\$ cc"
> Спасибо так работает, но я получаю данные без экранирования, и меня конечно
> интересует вариант
>> либо так 'aa bb$ cc'
> но не работает
> perl -E 'my $p='aa bb$ cc'; $p =~ s/S+\$/XXX/g;  say "$p"'
> <ничего>

потому что однострочник с неэкранированным  спецсимволом ("одинарная кавычка").

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

4. "Perl и символ $"  +/
Сообщение от ЫЫ on 13-Сен-17, 10:59 
>>> Либо надо так "aa bb\$ cc"
>> Спасибо так работает, но я получаю данные без экранирования, и меня конечно
>> интересует вариант
>>> либо так 'aa bb$ cc'
>> но не работает
>> perl -E 'my $p='aa bb$ cc'; $p =~ s/S+\$/XXX/g;  say "$p"'
>> <ничего>
> потому что однострочник с неэкранированным  спецсимволом ("одинарная кавычка").

для линукса (под виндой не сработает, экранироваь надо по другому):
perl -e "\$p='aa bb$ cc'; \$p=~s/\S+\\$/XXX/g;  print \$p;"

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

5. "Perl и символ $"  +/
Сообщение от XAnder (ok) on 13-Сен-17, 12:25 
> для линукса (под виндой не сработает, экранироваь надо по другому):
> perl -e "\$p='aa bb$ cc'; \$p=~s/\S+\\$/XXX/g;  print \$p;"

Можно проще:

perl -E 'my $p=q{aa bb$ cc}; $p =~ s/\S+\$/XXX/g; say $p'

Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

6. "Perl и символ $"  +/
Сообщение от ЫЫ on 13-Сен-17, 13:55 
>> для линукса (под виндой не сработает, экранироваь надо по другому):
>> perl -e "\$p='aa bb$ cc'; \$p=~s/\S+\\$/XXX/g;  print \$p;"
> Можно проще:
>
perl -E 'my $p=q{aa bb$ cc}; $p =~ s/\S+\$/XXX/g; say $p'

Ну...Мне кажется вообще странным желание решать задачу через однострочник, подставляя ему значения в виде сформированной в том же однострочнике переменной.
Поэтому возможно что и этот случай не будет удовлетворять желаемому решению...

Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору


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

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




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

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