LINUX.ORG.RU

а почему бы не подставить сразу значение?

TERRANZ ★★★★
()

Можно так?

Да.

man sh

anonymous
()

это можно сделать, используя расширения GNU.

В стандартном sed такого нет. В GNU — есть. Опция `e' команды `s' позволяет заменить на результат выполнения команды, например:

$ echo hello world| sed 's/hello/date/e'
Вт. авг.  7 14:04:36 MSK 2012
anarquista ★★★★★
()
Ответ на: комментарий от pianolender

ну да, там world не должно быть, получается, что исполняется date world.

Вот такой пример:

$ echo yesterday | sed 's/^/date -d/e'
Пн. авг.  6 14:17:01 MSK 2012

anarquista ★★★★★
()
Ответ на: комментарий от sdio

Это я понял по своему эксперименту, а вот коллега anarquista либо пользуется другим sed, либо запостил пример по памяти.

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

pianolender ★★★
() автор топика

perl -pe 's/(...)/function($1)/ge'

AITap ★★★★★
()
Ответ на: комментарий от pianolender

Нужно получить результат команды, которой в качестве параметра передали бекреференс.

$ echo 'Now %date%' | perl -ne 's/%date%/`date`/e; print'
Now Вт. авг.  7 14:28:38 MSK 2012

?

KRoN73 ★★★★★
()
sed -e 's/$what/& '$(script.sh $what)' &/g' file

scipt.sh должен выводить строку через echo

leave ★★★★★
()
Последнее исправление: leave (всего исправлений: 1)
Ответ на: комментарий от KRoN73

Ага, получилось.

Всем спасибо, разобрался.

pianolender ★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.