Ответ Хавьера зависит от оболочки и не будет работать во всех оболочках.
Ответы sed, на которые ссылаются MrTelly и epochwolf, являются неполными и должны выглядеть примерно так:
MyString="stuff ttto be edittted"
NewString=`echo $MyString | sed -e 's/\(.*\)ttt\(.*\)/\1xxx\2/'`
Причина, по которой это работает без необходимости использовать $ для обозначения конца, состоит в том, что первый символ '. *' Является жадным и будет пытаться собрать как можно больше, в то время как остальная часть регулярного выражения будет истинной. 1006 *
Эта команда sed должна нормально работать в любом используемом контексте оболочки.