Якщо 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}|.+/)у рядку введення $_(у цьому випадку очікується, що вхід надходить зі стандарту в) і додає кожну відповідність у масив,
- об'єднує масив у рядок із знаком "+", що з'єднує кожен елемент
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
Зауважте, що він не додає жодних знаків "+".