On Wed, Jun 19, 2013 at 04:58:07PM +0400, Владимир Скубриев wrote:
> On 19.06.2013 15:37, alexander barakin wrote:
> 
> Можно еще маленький вопросик. Решил переписать для большей универсальности -
> работает:
> 
> sed -i '/^.*::.*/s/\(^.*:: \)\(.*\)/echo -n "\1"; echo "\2" | base64 -d/e' 
> /tmp
> /passwd
> 
> Далее решил потренироваться и переписать с  -r
> 
> Но вот не задача - ругается не могу понять в чем причина
> 
> Вариант 1. Практически копия верхней команды только без символов экранирования
> с -r уже не пашет
> sed -ir '/^.*::.*/s/(^.*:: )(.*)/echo -n "\1"; echo \2 | base64 -d/e' /tmp/
> passwd
> 
> Ругаеться на
> sed: -e expression #1, char 59: invalid reference \2 on `s' command's RHS
> 
> Вариант 2. Версия вашего предложения без хардкодинга "userPassword"
> sed -ir 's/(.*:: )(.*)/echo -n "\1"; echo \2 | base64 -d/e' /tmp/passwd
> 
> Ругаеться на
> sed: -e expression #1, char 49: invalid reference \2 on `s' command's RHS
> 
> Что тут не так не знаете ?

опция -i подразумевает наличие необязательного параметра:
-i[SUFFIX]

не соединяйте её с другими опциями. т.е.:
sed -i -r ...

-- 
wbr, alexander barakin aka sash-kan.
-- 
i will be very thankful to you if you will use natural for the human order:
first question, then the answer.

Attachment: signature.asc
Description: Digital signature

Ответить