Если sed не является обязательным, использование Ruby может быть альтернативой. Интерпретатор Ruby ruby, можно использовать как sed и awk, запустив его с -nопцией, которая заставляет его перебирать свой ввод. Затем интерпретатор может быть передан с помощью однострочной строки Ruby, добавив его в качестве аргумента в -eопцию (которая говорит интерпретатору интерпретировать аргумент, -eа не искать скрипт в файле).
Для этой конкретной проблемы вы можете использовать следующую однострочную строку (адаптировано с https://stackoverflow.com/a/3184271/789593 ):
ruby -ne 'puts $_.scan(/.{3}|.+/).join("+")'
На простом языке это
- соответствует любым 3 символам или по крайней мере одному символу
scan(/.{3}|.+/)во входной строке $_(в этом случае ожидается, что ввод поступит из стандарта in) и помещает каждое совпадение в массив,
- объединяет массив в строку с символом «+», соединяющим каждый элемент
join("+"),
- и печатает его завершается переводом строки
puts.
Например
echo "AUGGCCAUGGCGCCCAGAACUGAGAUCAAUAGUACCCGUAUUAACGGGUG" | ruby -ne 'puts $_.scan(/.{3}|.+/).join("+")'
AUG+GCC+AUG+GCG+CCC+AGA+ACU+GAG+AUC+AAU+AGU+ACC+CGU+AUU+AAC+GGG+UG
Обратите внимание, что он не добавляет завершающий символ «+».