Re: помогите с sed и подпрограммой

2013-06-25 Пенетрантность Владимир Скубриев

On 24.06.2013 21:27, Артём Н. wrote:

если вдруг кому понадобиться в будущем:

sed -i -r '/^.*::.*/s/(^.*)(::) (.*)/echo -n \\1;echo -n : ; echo \\3 |
base64 -d/e' /path/to/file
Угу. *) Спасибо. :: ) Пожелаю вам, чтобы ваш код поддерживал хороший саппорт:
http://tinyurl.com/mmmdg2v
И скорейшего перехода на Ruby или Perl. /(



Все познается в процессе сравнения )

Не ошибается тот, кто ни чего не делает.

Да на перле проще в каком то смысле - но ведь до этого нужно было дойти.


--
С Уважением,
специалист по техническому и программному обеспечению,
системный администратор

Скубриев Владимир
~~~
Россия, Ростовская область, г. Таганрог

тел. моб: +7 (918) 504 38 20
skype: v.skubriev
icq: 214-800-502
www: skubriev.ru



Re: помогите с sed и подпрограммой

2013-06-25 Пенетрантность Артём Н.
On 25.06.2013 11:35, Владимир Скубриев wrote:
 Все познается в процессе сравнения )
 Не ошибается тот, кто ни чего не делает.
 
Ну да.

 Да на перле проще в каком то смысле - но ведь до этого нужно было дойти.
Простота написания - не самоцель. Просто если через год, вам потребуется
прочитать то, что вы написали, есть вероятность, что несколько десятков
волшебных строчек на sed, как в примере, заставит вас забыть поговорки.
Кстати, особенно увлекательно будет копаться в старой рассылке, чтобы понять,
как это работало и почему.


-- 
To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/51c9cec4.5070...@yandex.ru



Re: помогите с sed и подпрограммой

2013-06-24 Пенетрантность Артём Н.
On 20.06.2013 15:49, Владимир Скубриев wrote:
 On 20.06.2013 10:50, Владимир Скубриев wrote:

 не рабочий вариант:
 sed -i -r '/^.*::.*/s/(^.*:: )(.*)/echo -n \1; echo \2 | base64 -d/e'
 $dbdir/$stamp/$ou

 рабочий вариант:
 sed -i -r '/^.*::.*/s/(^.*:: )(.*)/echo -n \\1; echo \\2 | base64 -d/e'
 $dbdir/$stamp/$ou

 пришлось за бэкслэшить \\1 и \\2 иначе bash переводил echo -n \\1; echo \\2
 в echo -n ^A; echo ^2

 пришлось не много переделать из-за того, что в ldap нельзя загрузить ldif с
 разделителем  ::
 
 поэтому окончательный вариант для chef'a
 
 если вдруг кому понадобиться в будущем:
 
 sed -i -r '/^.*::.*/s/(^.*)(::) (.*)/echo -n \\1;echo -n : ; echo \\3 |
 base64 -d/e' /path/to/file
Угу. *) Спасибо. :: ) Пожелаю вам, чтобы ваш код поддерживал хороший саппорт:
http://tinyurl.com/mmmdg2v
И скорейшего перехода на Ruby или Perl. /(


-- 
To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/51c88170.4020...@yandex.ru



Re: помогите с sed и подпрограммой

2013-06-20 Пенетрантность Владимир Скубриев

On 19.06.2013 22:13, Alexander Galanin wrote:

On Wed, 19 Jun 2013 15:29:16 +0400
dimas dimas...@ya.ru wrote:


если в качестве разделителя вместо / выбрать что-то, чего заведомо не будет в
замеяемой строке, то может и прокатить))) но это костыль.
а как нормально заэкранировать ввод? гугль подсказал про printf %q, но он
съедает не все - например, / . остаются как есть, хотя во второй части команды
это не страшно. да в принципе, можно много фигни там написать, и она пойдет как
есть, это в строке поиска надо мудрить.

Пропустить через что-нибудь типа sed 's/[\/abc]/\\/g', чтобы
заэкранировать спецсимволы (набор которых в каждом случае свой, в моём
примере это /, a, b и c). А лучше использовать язык более широкого
применения, в котором такие пляски не понядобятся, потому что через год
понять эту белиберду на регекспах будет сложно.


По поводу плясок согласен. Уж очень много нюансов.

Сейчас вот из шефа не работает - скотина. Уже просто слов нет. 2-ой день 
пошел.


--
С Уважением,
специалист по техническому и программному обеспечению,
системный администратор

Скубриев Владимир
~~~
Россия, Ростовская область, г. Таганрог

тел. моб: +7 (918) 504 38 20
skype: v.skubriev
icq: 214-800-502
www: skubriev.ru


--
To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/51c2a10d.5080...@skubriev.ru



Re: помогите с sed и подпрограммой

2013-06-20 Пенетрантность Владимир Скубриев

On 20.06.2013 10:28, Владимир Скубриев wrote:

По поводу плясок согласен. Уж очень много нюансов.

Сейчас вот из шефа не работает - скотина. Уже просто слов нет. 2-ой 
день пошел.




не рабочий вариант:
sed -i -r '/^.*::.*/s/(^.*:: )(.*)/echo -n \1; echo \2 | base64 -d/e' 
$dbdir/$stamp/$ou


рабочий вариант:
sed -i -r '/^.*::.*/s/(^.*:: )(.*)/echo -n \\1; echo \\2 | base64 
-d/e' $dbdir/$stamp/$ou


пришлось за бэкслэшить \\1 и \\2 иначе bash переводил echo -n \\1; 
echo \\2 в echo -n ^A; echo ^2


)

даже и не знаю что сказать - сложная это штука linux )

--
С Уважением,
специалист по техническому и программному обеспечению,
системный администратор

Скубриев Владимир
~~~
Россия, Ростовская область, г. Таганрог

тел. моб: +7 (918) 504 38 20
skype: v.skubriev
icq: 214-800-502
www: skubriev.ru



Re: помогите с sed и подпрограммой

2013-06-20 Пенетрантность Dmitrii Kashin
At Thu, 20 Jun 2013 10:50:45 +0400,
Владимир Скубриев wrote:
 
 пришлось за бэкслэшить \\1 и \\2 иначе bash переводил echo -n \\1; 
 echo \\2 в echo -n ^A; echo ^2

Ну разумеется. bash(1):
\nnn   the eight-bit character whose value is the octal value nnn (one to three 
digits)


--
To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/87sj0dmbra.wl%free...@gmail.com



Re: помогите с sed и подпрограммой

2013-06-20 Пенетрантность dimas
12:21:24 171 ~$ echo test me baby | sed -r 's/(test me) (baby)/echo -n \2 
; echo \1/e'
baby test me
12:24:18 171 ~$ echo test me baby | sed -r 's/(test me) (baby)/echo -n \\2 
\; echo \\1\/e'
baby test me
12:26:10 171 ~$ echo test me baby | sed -r 's/(test me) (baby)/echo -n \2 
; echo \1/e'
baby test me
УМВР во всех случаях.



2013-171 10:50 Владимир Скубриев vladi...@skubriev.ru wrote:
 On 20.06.2013 10:28, Владимир Скубриев wrote:
  По поводу плясок согласен. Уж очень много нюансов.
 
  Сейчас вот из шефа не работает - скотина. Уже просто слов нет. 2-ой 
  день пошел.
 
 
 не рабочий вариант:
 sed -i -r '/^.*::.*/s/(^.*:: )(.*)/echo -n \1; echo \2 | base64 -d/e' 
 $dbdir/$stamp/$ou
 
 рабочий вариант:
 sed -i -r '/^.*::.*/s/(^.*:: )(.*)/echo -n \\1; echo \\2 | base64 
 -d/e' $dbdir/$stamp/$ou
 
 пришлось за бэкслэшить \\1 и \\2 иначе bash переводил echo -n \\1; 
 echo \\2 в echo -n ^A; echo ^2
 
 )
 
 даже и не знаю что сказать - сложная это штука linux )
 


--
To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/20130620122848.7a64b...@ulf.tvoe.tv



Re: помогите с sed и подпрограммой

2013-06-20 Пенетрантность Artem Chuprina
Владимир Скубриев - debian-russian@lists.debian.org  @ Thu, 20 Jun 2013 
10:50:45 +0400:

  По поводу плясок согласен. Уж очень много нюансов.
 
  Сейчас вот из шефа не работает - скотина. Уже просто слов нет. 2-ой день
  пошел.
 

 ВС не рабочий вариант:
 ВС sed -i -r '/^.*::.*/s/(^.*:: )(.*)/echo -n \1; echo \2 | base64 -d/e'
 ВС $dbdir/$stamp/$ou

 ВС рабочий вариант:
 ВС sed -i -r '/^.*::.*/s/(^.*:: )(.*)/echo -n \\1; echo \\2 | base64 -d/e'
 ВС $dbdir/$stamp/$ou

 ВС пришлось за бэкслэшить \\1 и \\2 иначе bash переводил echo -n \\1; echo 
\\2
 ВС в echo -n ^A; echo ^2

 ВС )

 ВС даже и не знаю что сказать - сложная это штука linux )

Что-то я подозреваю, что не в баше дело.  Если команда выдавалась в нем,
то для bash экранирование апострофами - это повод не подставлять \n, и
они должны были попасть к sed как есть, а дальше их подставит уже sed, и
во внутренний bash они уже не попадут.

Но если вся команда целиком подсовывалась башу какой-то еще программой,
там могла произойти подстановка.


-- 
To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/8738sd86ob@wizzle.ran.pp.ru



Re: помогите с sed и подпрограммой

2013-06-20 Пенетрантность Владимир Скубриев

On 20.06.2013 13:36, Artem Chuprina wrote:

Но если вся команда целиком подсовывалась башу какой-то еще программой,
там могла произойти подстановка.



как раз так и работает chef

--
С Уважением,
специалист по техническому и программному обеспечению,
системный администратор

Скубриев Владимир
~~~
Россия, Ростовская область, г. Таганрог

тел. моб: +7 (918) 504 38 20
skype: v.skubriev
icq: 214-800-502
www: skubriev.ru


--
To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/51c2cf99.5010...@skubriev.ru



Re: помогите с sed и подпрограммой

2013-06-20 Пенетрантность Владимир Скубриев

On 20.06.2013 13:36, Artem Chuprina wrote:


Но если вся команда целиком подсовывалась башу какой-то еще программой,
там могла произойти подстановка.


в просто созданном скрипте с #!/bin/bash все работает без экранирования 
дополнительным слэшем )


--
С Уважением,
специалист по техническому и программному обеспечению,
системный администратор

Скубриев Владимир
~~~
Россия, Ростовская область, г. Таганрог

тел. моб: +7 (918) 504 38 20
skype: v.skubriev
icq: 214-800-502
www: skubriev.ru



Re: помогите с sed и подпрограммой

2013-06-20 Пенетрантность Владимир Скубриев

On 20.06.2013 10:50, Владимир Скубриев wrote:


не рабочий вариант:
sed -i -r '/^.*::.*/s/(^.*:: )(.*)/echo -n \1; echo \2 | base64 
-d/e' $dbdir/$stamp/$ou


рабочий вариант:
sed -i -r '/^.*::.*/s/(^.*:: )(.*)/echo -n \\1; echo \\2 | base64 
-d/e' $dbdir/$stamp/$ou


пришлось за бэкслэшить \\1 и \\2 иначе bash переводил echo -n \\1; 
echo \\2 в echo -n ^A; echo ^2


пришлось не много переделать из-за того, что в ldap нельзя загрузить 
ldif с разделителем  ::


поэтому окончательный вариант для chef'a

если вдруг кому понадобиться в будущем:

sed -i -r '/^.*::.*/s/(^.*)(::) (.*)/echo -n \\1;echo -n : ; echo 
\\3 | base64 -d/e' /path/to/file


--
С Уважением,
специалист по техническому и программному обеспечению,
системный администратор

Скубриев Владимир
~~~
Россия, Ростовская область, г. Таганрог

тел. моб: +7 (918) 504 38 20
skype: v.skubriev
icq: 214-800-502
www: skubriev.ru



Re: помогите с sed и подпрограммой

2013-06-19 Пенетрантность Artem Chuprina
Владимир Скубриев - debian-russian@lists.debian.org  @ Tue, 18 Jun 2013 
22:29:47 +0400:

  sed, помнится, делать так не умеет.  Стоит взять perl.
 ВС да как бы перла еще не хватало )

 ВС видел я примеры на нем, но хотелось бы все таки без всяких там perl, ruby,
 ВС python, etc

Мы по debian или про LFS?  У нас перл в базовую систему входит.  В
отличие от ruby, python, etc.  И придуман ровно для решения задач,
которые на sed/awk решать уже неудобно.


-- 
To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/87wqpqr36w@wizzle.ran.pp.ru



Re: помогите с sed и подпрограммой

2013-06-19 Пенетрантность Владимир Скубриев

On 19.06.2013 11:04, Artem Chuprina wrote:

Владимир Скубриев - debian-russian@lists.debian.org  @ Tue, 18 Jun 2013 
22:29:47 +0400:

   sed, помнится, делать так не умеет.  Стоит взять perl.
  ВС да как бы перла еще не хватало )

  ВС видел я примеры на нем, но хотелось бы все таки без всяких там perl, ruby,
  ВС python, etc

Мы по debian или про LFS?  У нас перл в базовую систему входит.  В
отличие от ruby, python, etc.  И придуман ровно для решения задач,
которые на sed/awk решать уже неудобно.



уже читаю ruby
потому, что он мне важнее чем perl
так как используется chef.

а так по сути я уже понял что или perl | ruby

но так ведь до этого надо было дойти )

--
С Уважением,
специалист по техническому и программному обеспечению,
системный администратор

Скубриев Владимир
~~~
Россия, Ростовская область, г. Таганрог

тел. моб: +7 (918) 504 38 20
skype: v.skubriev
icq: 214-800-502
www: skubriev.ru


--
To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/51c15ad7.9070...@skubriev.ru



Re: помогите с sed и подпрограммой

2013-06-19 Пенетрантность alexander barakin
On Wed, Jun 19, 2013 at 09:23:43AM +0400, Владимир Скубриев wrote:
 Вот кусок исходного файла:
 
 # anthropics, users, example.lab
 dn: cn=anthropics,ou=users,dc=example,dc=lab
 cn: Anthropics Client
 cn: anthropics
 description: Anthropics Client
 gidNumber: 1901
 homeDirectory: /home/anthropics
 loginShell: /bin/bash
 mail: [1]anthrop...@example.com
 objectClass: simpleSecurityObject
 objectClass: inetOrgPerson
 objectClass: posixAccount
 objectClass: shadowAccount
 sn: Anthropics
 uid: anthropics
 uidNumber: 2019
 userPassword:: e1NIQX1vTzU2WHBYMlU3cmZFWkJpL3I4UGUvYjNyb0k9
 
 # apotash01, users, example.lab
 dn: cn=apotash01,ou=users,dc=example,dc=lab
 cn: Adam Potash
 cn: apotash01
 description: Passenger monitoring project
 gidNumber: 1901
 homeDirectory: /home/apotash01
 loginShell: /bin/bash
 mail: [2]apotas...@example.com
 objectClass: simpleSecurityObject
 objectClass: inetOrgPerson
 objectClass: posixAccount
 objectClass: shadowAccount
 sn: Potash
 uid: apotash01
 uidNumber: 2032
 userPassword:: e1NIQX1rVGkyNVBYd3FOZlNURXZkT1d3Q1FPZGZ5OVk9

$ sed -r 's/(userPassword:: )(.*)/echo -n \1; echo \2 | base64 -d/e' file
# anthropics, users, example.lab
dn: cn=anthropics,ou=users,dc=example,dc=lab
cn: Anthropics Client
cn: anthropics
description: Anthropics Client
gidNumber: 1901
homeDirectory: /home/anthropics
loginShell: /bin/bash
mail: anthrop...@example.com
objectClass: simpleSecurityObject
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
sn: Anthropics
uid: anthropics
uidNumber: 2019
userPassword:: {SHA}oO56XpX2U7rfEZBi/r8Pe/b3roI=

# apotash01, users, example.lab
dn: cn=apotash01,ou=users,dc=example,dc=lab
cn: Adam Potash
cn: apotash01
description: Passenger monitoring project
gidNumber: 1901
homeDirectory: /home/apotash01
loginShell: /bin/bash
mail: apotas...@example.com
objectClass: simpleSecurityObject
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
sn: Potash
uid: apotash01
uidNumber: 2032
userPassword:: {SHA}kTi25PXwqNfSTEvdOWwCQOdfy9Y=

-- 
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.


signature.asc
Description: Digital signature


Re: помогите с sed и подпрограммой

2013-06-19 Пенетрантность Владимир Скубриев

On 19.06.2013 12:56, alexander barakin wrote:

$ sed -r 's/(userPassword:: )(.*)/echo -n \1; echo \2 | base64 -d/e' file

Спасибо большое за такую подсказку. Это как раз то что я искал.

Ваша команда работает, правда мне почему то захотелось её переписать вот так

sed -i '/^userPassword/s/\(^userPassword:: \)\(.*\)/echo -n \1; echo 
\2 | base64 -d/e' /tmp/passwd


Спору нет у вас красивей, но пока я не запомнил -r флаг, хотя он мне и 
встречался. Может скажите доброе слово в защиту -r ?


Еще более чем странно, что я потратил уже целый рабочий день на то, 
чтобы заменить подстроку в файле. Прямо как то стрёмно становиться с 
прогнозами.



Есть несколько вопросов:

1. если вызывать sed без -r, то нужно только экранировать
Символы ‘?’, ‘+’, круглые скобки, {}
символом \ если вы хотите использовать их как специальные 
символы
и все ? в этом и есть его специальное предназначение - улучшать вид 
рэгэкспа ?


2. Не могу найти ссылку на документацию по использованию /e
Для чего конкретно он используется почти в самом конце - не execute ли 
случайно ?


3. Где можно почитать по ; как разделителе команд оболочки в sed не 
подскажите ?

Или это относиться к shell ) ?

Остальное все понятно вроде.
А я уже почте сделал на ruby ). Но пока не сделал еще где то ошибка есть.

--
С Уважением,
специалист по техническому и программному обеспечению,
системный администратор

Скубриев Владимир
~~~
Россия, Ростовская область, г. Таганрог

тел. моб: +7 (918) 504 38 20
skype: v.skubriev
icq: 214-800-502
www: skubriev.ru

 * English - detected
 * English

 * English

javascript:void(0);


Re: помогите с sed и подпрограммой

2013-06-19 Пенетрантность dimas
  s/^userPassword:\ //
 что означает обратный слэш после
 s/^userPassword:
экранирование пробела. в принципе, без него работает, добавлять по вкусу))


--
To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/20130619151159.3334f...@ulf.tvoe.tv



Re: помогите с sed и подпрограммой

2013-06-19 Пенетрантность dimas
если в качестве разделителя вместо / выбрать что-то, чего заведомо не будет в
замеяемой строке, то может и прокатить))) но это костыль.
а как нормально заэкранировать ввод? гугль подсказал про printf %q, но он
съедает не все - например, / . остаются как есть, хотя во второй части команды
это не страшно. да в принципе, можно много фигни там написать, и она пойдет как
есть, это в строке поиска надо мудрить.


2013-170 09:12 Alexander Galanin a...@galanin.nnov.ru wrote:
 Это не сработает, например, со строкой YmxhaC9ibGFoCg==, переданной на
 вход base64 -d. А всё потому, что спецсимволы стоит экранировать.
 


--
To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/20130619152916.51f00...@ulf.tvoe.tv



Re: помогите с sed и подпрограммой

2013-06-19 Пенетрантность alexander barakin
On Wed, Jun 19, 2013 at 02:24:42PM +0400, Владимир Скубриев wrote:
 Есть несколько вопросов:
 
 1. если вызывать sed без -r, то нужно только экранировать
     Символы ‘?’, ‘+’, круглые скобки, {}
             символом \ если вы хотите использовать их как специальные символы
     и все ? в этом и есть его специальное предназначение - улучшать вид
 рэгэкспа ?

про параметр -r:
$ info sed invoking sed
и дальше по ссылке:
$ info sed extended regexps

 2. Не могу найти ссылку на документацию по использованию /e

$ info sed the s command

 3. Где можно почитать по ; как разделителе команд оболочки в sed не
 подскажите ?

вероятно, где-то должно быть упомянуто, но сходу не нашёл.
но есть примеры программ, где можно рассмотреть синтаксис разделения
команд в sed-программах — точка с запятой или новая строка:
$ info sed examples

 Или это относиться к shell ) ?

в данном случае это относится к shell

-- 
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.


signature.asc
Description: Digital signature


Re: помогите с sed и подпрограммой

2013-06-19 Пенетрантность Владимир Скубриев

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

Что тут не так не знаете ?



--
С Уважением,
специалист по техническому и программному обеспечению,
системный администратор

Скубриев Владимир
~~~
Россия, Ростовская область, г. Таганрог

тел. моб: +7 (918) 504 38 20
skype: v.skubriev
icq: 214-800-502
www: skubriev.ru



Re: помогите с sed и подпрограммой

2013-06-19 Пенетрантность alexander barakin
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.


signature.asc
Description: Digital signature


Re: помогите с sed и подпрограммой

2013-06-19 Пенетрантность Artem Chuprina
Владимир Скубриев - debian-russian@lists.debian.org  @ Wed, 19 Jun 2013 
16:58:07 +0400:

 ВС 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

В том варианте, с которого вы копируете, написано \( и \).  А у вас -
просто ( и ).  Это не группирующие скобки, это просто символы скобок.
На что sed, в общем, справедливо замечает, что \2 в таком раскладе
взяться неоткуда.


-- 
To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/87ehby871b@wizzle.ran.pp.ru



Re: помогите с sed и подпрограммой

2013-06-19 Пенетрантность Alexander Galanin
On Wed, 19 Jun 2013 15:29:16 +0400
dimas dimas...@ya.ru wrote:

 если в качестве разделителя вместо / выбрать что-то, чего заведомо не будет в
 замеяемой строке, то может и прокатить))) но это костыль.
 а как нормально заэкранировать ввод? гугль подсказал про printf %q, но он
 съедает не все - например, / . остаются как есть, хотя во второй части 
 команды
 это не страшно. да в принципе, можно много фигни там написать, и она пойдет 
 как
 есть, это в строке поиска надо мудрить.

Пропустить через что-нибудь типа sed 's/[\/abc]/\\/g', чтобы
заэкранировать спецсимволы (набор которых в каждом случае свой, в моём
примере это /, a, b и c). А лучше использовать язык более широкого
применения, в котором такие пляски не понядобятся, потому что через год
понять эту белиберду на регекспах будет сложно.

-- 
Alexander Galanin


-- 
To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: 
http://lists.debian.org/20130619221351.5bb70378bef1605e76a16...@galanin.nnov.ru



Re: помогите с sed и подпрограммой

2013-06-18 Пенетрантность Artem Chuprina
Владимир Скубриев - debian-russian@lists.debian.org  @ Tue, 18 Jun 2013 
17:49:32 +0400:

 ВС Есть файл в котором есть строки на подобии этой:

 ВС userPassword:: e1NIQX1WN3k5OFpIMU9FMEQ2TFVFb0loSHRGaHkycVk9

 ВС Это значение справа - в кодировке base64.

 ВС Его нужно раскодировать.

 ВС Начал писать sed скрипт и застопорился на том, как мне найденную подстроку
 ВС теперь преобразовать и именно на результат преобразования заменить

 ВС sed -i '/^userPassword::/s/\(^userPassword:: \)\(.*\)$/\2/' /tmp/passwd

 ВС \2 - уже возвращает чисто само значение.

 ВС то есть скрипт меняет всю строку на само значение закодированное.

 ВС теперь я хотел бы его передать чему то, что вернуло бы раскодированное
 ВС значение.

 ВС идея была использовать openssl, правда он у меня кое что лишнее возвращает
 ВС пока - но не беда разберусь. (ругается при запуске на WARNING: can't open
 ВС config file: /usr/lib/ssl/openssl.cnf )

 ВС echo e1NIQX1WN3k5OFpIMU9FMEQ2TFVFb0loSHRGaHkycVk9 | openssl enc -base64 
-d

 ВС Возвращает нужный мне хэш пользователя ldap ).

 ВС Но хотелось бы как то его выполнить прямо в контексте седа.

 ВС subscript=`четотам`

 ВС Я читал что про $subscript

 ВС Но как это называется в sed  и как его правильно вставить в подстроку для
 ВС замены не могу найти.

 ВС Есть подозрение, что это не будет работать, тогда подскажите пожалуйста как
 ВС правильней?

sed, помнится, делать так не умеет.  Стоит взять perl.


-- 
To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/877ghrscdq@wizzle.ran.pp.ru



Re: помогите с sed и подпрограммой

2013-06-18 Пенетрантность loh
On Tue, Jun 18, 2013 at 10:29:47PM +0400, Владимир Скубриев wrote:
 да как бы перла еще не хватало )
 
 видел я примеры на нем, но хотелось бы все таки без всяких там perl,
 ruby, python, etc

В sed такие вещи писать сложно

bash

http://vladz.devzero.fr/svn/codes/bash/base64.sh

или perl

perl -MMIME::Base64 -F: -a -ne '@a=@F; $a[1]=decode_base64($a[1]); print join 
(:,@a)' file


-- 
To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/20130618184131.ga22...@nano.ioffe.rssi.ru



Re: помогите с sed и подпрограммой

2013-06-18 Пенетрантность Владимир Скубриев

18.06.2013 18:48, Artem Chuprina пишет:

Владимир Скубриев - debian-russian@lists.debian.org  @ Tue, 18 Jun 2013 
17:49:32 +0400:

  ВС Есть файл в котором есть строки на подобии этой:

  ВС userPassword:: e1NIQX1WN3k5OFpIMU9FMEQ2TFVFb0loSHRGaHkycVk9

  ВС Это значение справа - в кодировке base64.

  ВС Его нужно раскодировать.

  ВС Начал писать sed скрипт и застопорился на том, как мне найденную подстроку
  ВС теперь преобразовать и именно на результат преобразования заменить

  ВС sed -i '/^userPassword::/s/\(^userPassword:: \)\(.*\)$/\2/' /tmp/passwd

  ВС \2 - уже возвращает чисто само значение.

  ВС то есть скрипт меняет всю строку на само значение закодированное.

  ВС теперь я хотел бы его передать чему то, что вернуло бы раскодированное
  ВС значение.

  ВС идея была использовать openssl, правда он у меня кое что лишнее возвращает
  ВС пока - но не беда разберусь. (ругается при запуске на WARNING: can't open
  ВС config file: /usr/lib/ssl/openssl.cnf )

  ВС echo e1NIQX1WN3k5OFpIMU9FMEQ2TFVFb0loSHRGaHkycVk9 | openssl enc -base64 
-d

  ВС Возвращает нужный мне хэш пользователя ldap ).

  ВС Но хотелось бы как то его выполнить прямо в контексте седа.

  ВС subscript=`четотам`

  ВС Я читал что про $subscript

  ВС Но как это называется в sed  и как его правильно вставить в подстроку для
  ВС замены не могу найти.

  ВС Есть подозрение, что это не будет работать, тогда подскажите пожалуйста 
как
  ВС правильней?

sed, помнится, делать так не умеет.  Стоит взять perl.

да как бы перла еще не хватало )

видел я примеры на нем, но хотелось бы все таки без всяких там perl, 
ruby, python, etc


--

С Уважением,
специалист по техническому и программному обеспечению,
системный администратор

Скубриев Владимир
~~~
Россия, Ростовская область, г. Таганрог

тел. моб: +7 (918) 504 38 20
skype: v.skubriev
icq: 214-800-502
www: skubriev.ru


--
To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/51c0a71b.10...@skubriev.ru



Re: помогите с sed и подпрограммой

2013-06-18 Пенетрантность Alexander Galanin
On Tue, 18 Jun 2013 22:29:47 +0400
Владимир Скубриев vladi...@skubriev.ru wrote:

ВС то есть скрипт меняет всю строку на само значение закодированное.
ВС теперь я хотел бы его передать чему то, что вернуло бы раскодированное
ВС значение.
  sed, помнится, делать так не умеет.  Стоит взять perl.
 да как бы перла еще не хватало )
 
 видел я примеры на нем, но хотелось бы все таки без всяких там perl, 
 ruby, python, etc

Можно попробовать на gawk переписать, там есть возможность вызова
внешних команд:
command | getline [var]
Run command piping the output either into $0 or var, as above.

Может и более традиционный awk (mawk, nawk или что там у нас по
умолчанию ставится?) это умеет, проверьте сами.

-- 
Alexander Galanin


-- 
To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: 
http://lists.debian.org/20130618224420.79846ceb47d24b8be87a9...@galanin.nnov.ru



Re: помогите с sed и подпрограммой

2013-06-18 Пенетрантность dimas
 sed -i '/^userPassword::/s/\(^userPassword:: \)\(.*\)$/\2/' /tmp/passwd
 \2 - уже возвращает чисто само значение.
 то есть скрипт меняет всю строку на само значение закодированное.
для начала, зачем эти сложности?
s/^userPassword:\ //
все! банальная же операция, отрезаем ненужное))


 echo e1NIQX1WN3k5OFpIMU9FMEQ2TFVFb0loSHRGaHkycVk9 | openssl enc -base64 -d
 Возвращает нужный мне хэш пользователя ldap ).
в coreutils есть утилита base64, не надо никаких openssl (который еще не везде
есть) и тем более скриптов на баше, как ниже приводили.


 Но хотелось бы как то его выполнить прямо в контексте седа.
 subscript=`четотам`
 Я читал что про $subscript
 Но как это называется в sed  и как его правильно вставить в подстроку 
 для замены не могу найти.
а зачем? когда мне нужно строку заменить на результат выполнения какой-то
команды, я обычно юзаю что-то типа
echo s/bla-bla-bla/$(echo sdg54SGDgsgGGXC4555 | base64 -d)/ | sed -f - -i 
input_file
в общем, сочиняем sed-скрипт на ходу и скармливаем его на stdin.


--
To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/20130619013009.16ccb...@ulf.tvoe.tv



Re: помогите с sed и подпрограммой

2013-06-18 Пенетрантность Alexander Galanin
On Wed, 19 Jun 2013 01:30:09 +0400
dimas dimas...@ya.ru wrote:

 а зачем? когда мне нужно строку заменить на результат выполнения какой-то
 команды, я обычно юзаю что-то типа
 echo s/bla-bla-bla/$(echo sdg54SGDgsgGGXC4555 | base64 -d)/ | sed -f - -i 
 input_file
 в общем, сочиняем sed-скрипт на ходу и скармливаем его на stdin.

Это не сработает, например, со строкой YmxhaC9ibGFoCg==, переданной на
вход base64 -d. А всё потому, что спецсимволы стоит экранировать.

-- 
Alexander Galanin


-- 
To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: 
http://lists.debian.org/20130619091232.3e2efe8c4c5c50fc85cde...@galanin.nnov.ru



Re: помогите с sed и подпрограммой

2013-06-18 Пенетрантность Владимир Скубриев

On 19.06.2013 01:30, dimas wrote:

sed -i '/^userPassword::/s/\(^userPassword:: \)\(.*\)$/\2/' /tmp/passwd
\2 - уже возвращает чисто само значение.
то есть скрипт меняет всю строку на само значение закодированное.

для начала, зачем эти сложности?
s/^userPassword:\ //
все! банальная же операция, отрезаем ненужное))

что означает обратный слэш после

s/^userPassword:

?




echo e1NIQX1WN3k5OFpIMU9FMEQ2TFVFb0loSHRGaHkycVk9 | openssl enc -base64 -d
Возвращает нужный мне хэш пользователя ldap ).

в coreutils есть утилита base64, не надо никаких openssl (который еще не везде
есть) и тем более скриптов на баше, как ниже приводили.

вот это хорошо. спасибо. сам не догадался посмотреть




Но хотелось бы как то его выполнить прямо в контексте седа.
subscript=`четотам`
Я читал что про $subscript
Но как это называется в sed  и как его правильно вставить в подстроку
для замены не могу найти.

а зачем? когда мне нужно строку заменить на результат выполнения какой-то
команды, я обычно юзаю что-то типа
echo s/bla-bla-bla/$(echo sdg54SGDgsgGGXC4555 | base64 -d)/ | sed -f - -i 
input_file
в общем, сочиняем sed-скрипт на ходу и скармливаем его на stdin.

таких строк много это раз
значение на которое нужно поменять не определено заранее и зависит от 
того, что идет после


userPassword::

Вот кусок исходного файла:

# anthropics, users, example.lab
dn: cn=anthropics,ou=users,dc=example,dc=lab
cn: Anthropics Client
cn: anthropics
description: Anthropics Client
gidNumber: 1901
homeDirectory: /home/anthropics
loginShell: /bin/bash
mail: anthrop...@example.com
objectClass: simpleSecurityObject
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
sn: Anthropics
uid: anthropics
uidNumber: 2019
userPassword:: e1NIQX1vTzU2WHBYMlU3cmZFWkJpL3I4UGUvYjNyb0k9

# apotash01, users, example.lab
dn: cn=apotash01,ou=users,dc=example,dc=lab
cn: Adam Potash
cn: apotash01
description: Passenger monitoring project
gidNumber: 1901
homeDirectory: /home/apotash01
loginShell: /bin/bash
mail: apotas...@example.com
objectClass: simpleSecurityObject
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
sn: Potash
uid: apotash01
uidNumber: 2032
userPassword:: e1NIQX1rVGkyNVBYd3FOZlNURXZkT1d3Q1FPZGZ5OVk9



--
С Уважением,
специалист по техническому и программному обеспечению,
системный администратор

Скубриев Владимир
~~~
Россия, Ростовская область, г. Таганрог

тел. моб: +7 (918) 504 38 20
skype: v.skubriev
icq: 214-800-502
www: skubriev.ru



Re: помогите с sed и подпрограммой

2013-06-18 Пенетрантность Владимир Скубриев

On 18.06.2013 22:41, l...@1917.com wrote:

On Tue, Jun 18, 2013 at 10:29:47PM +0400, Владимир Скубриев wrote:

да как бы перла еще не хватало )

видел я примеры на нем, но хотелось бы все таки без всяких там perl,
ruby, python, etc

В sed такие вещи писать сложно

bash

http://vladz.devzero.fr/svn/codes/bash/base64.sh

или perl

perl -MMIME::Base64 -F: -a -ne '@a=@F; $a[1]=decode_base64($a[1]); print join 
(:,@a)' file



спасибо. если с awk command не получится будут юзать именно его

--
С Уважением,
специалист по техническому и программному обеспечению,
системный администратор

Скубриев Владимир
~~~
Россия, Ростовская область, г. Таганрог

тел. моб: +7 (918) 504 38 20
skype: v.skubriev
icq: 214-800-502
www: skubriev.ru


--
To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/51c140a5.4090...@skubriev.ru



Re: помогите с sed и подпрограммой

2013-06-18 Пенетрантность Dmitry A. Zhiglov
18 июня 2013 г., 17:49 пользователь Владимир Скубриев
vladi...@skubriev.ru написал:
 Есть файл в котором есть строки на подобии этой:

 userPassword:: e1NIQX1WN3k5OFpIMU9FMEQ2TFVFb0loSHRGaHkycVk9

 Это значение справа - в кодировке base64.

 Его нужно раскодировать.

Можно поинтересоваться?
Что с чем женим?


Re: помогите с sed и подпрограммой

2013-06-18 Пенетрантность Владимир Скубриев

On 19.06.2013 09:30, Dmitry A. Zhiglov wrote:

18 июня 2013 г., 17:49 пользователь Владимир Скубриев
vladi...@skubriev.ru написал:

Есть файл в котором есть строки на подобии этой:

userPassword:: e1NIQX1WN3k5OFpIMU9FMEQ2TFVFb0loSHRGaHkycVk9

Это значение справа - в кодировке base64.

Его нужно раскодировать.

Можно поинтересоваться?
Что с чем женим?

бэкап отдельных OU из openldap

ни slapcat ни ldapsearch не возвращают нормальные пароли и не которые 
другие поля


у меня например еще email поле нужно раскодировать

--
С Уважением,
специалист по техническому и программному обеспечению,
системный администратор

Скубриев Владимир
~~~
Россия, Ростовская область, г. Таганрог

тел. моб: +7 (918) 504 38 20
skype: v.skubriev
icq: 214-800-502
www: skubriev.ru


--
To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/51c143af.2050...@skubriev.ru