Экспорт пути go в терминал
export GOPATH=<go path from the Home dir.>
export GOPATH=$HOME/go
То, чего вы пытаетесь достичь, действительно возможно, но только с GNU sed, с помощью команды e . Так что, если вы не возражаете против возможных проблем с переносимостью, вы можете попробовать.
Например.ваш пример будет выглядеть примерно так:
>echo aaabbdd | sed -e 's/a*/echo `echo -n & | wc -m`/;e'
3bbdd
если вы удалите ; e , вы увидите промежуточную команду (которая помогает понять, почему есть два эха)
echo `echo -n aaa | wc -m`bbdd
Если вы хотите заменить несколько совпадений, это может быть более сложно, но все же может быть выполнено путем объединения замен:
>echo aabbaadd | sed -re 's/a+/`echo -n &|wc -m`/g;s/.*/echo &/;e'
2bb2dd
И, безусловно, есть более эффективные инструменты для вашей задачи, такие как awk , который имеет встроенный length () функция.
Ссылки:
P.S.
Также обратите внимание, что если ваши входные данные содержат кавычки, вам придется тщательно их избегать или временно заменить их (например, командой sed y ///), чтобы это сработало.