Привет, у меня не получается замена с символом $ на 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 не работают тоже. Как тут правильно делается?
> Привет, у меня не получается замена с символом $ на 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'
> Либо надо так "aa bb\$ cc"Спасибо так работает, но я получаю данные без экранирования, и меня конечно интересует вариант
> либо так 'aa bb$ cc'но не работает
perl -E 'my $p='aa bb$ cc'; $p =~ s/S+\$/XXX/g; say "$p"'
<ничего>
>> Либо надо так "aa bb\$ cc"
> Спасибо так работает, но я получаю данные без экранирования, и меня конечно
> интересует вариант
>> либо так 'aa bb$ cc'
> но не работает
> perl -E 'my $p='aa bb$ cc'; $p =~ s/S+\$/XXX/g; say "$p"'
> <ничего>потому что однострочник с неэкранированным спецсимволом ("одинарная кавычка").
>>> Либо надо так "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;"
> для линукса (под виндой не сработает, экранироваь надо по другому):
> 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'
>> для линукса (под виндой не сработает, экранироваь надо по другому):
>> 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'Ну...Мне кажется вообще странным желание решать задачу через однострочник, подставляя ему значения в виде сформированной в том же однострочнике переменной.
Поэтому возможно что и этот случай не будет удовлетворять желаемому решению...