Se sed não for necessário, o uso de Ruby pode ser uma alternativa. O interpretador Ruby, ruby , pode ser usado como sed e awk, executando-o com a opção -n , o que faz com que seja iterado sobre sua entrada. O intérprete pode então ser alimentado com um one-liner Ruby, adicionando-o como um argumento para a opção -e (que diz ao interpretador para interpretar o argumento de -e em vez de procurar um script em um arquivo). p>
Para este problema em particular, você pode usar o seguinte one-liner (adaptado do link ):
ruby -ne 'puts $_.scan(/.{3}|.+/).join("+")'
Em linguagem simples,
- corresponde a 3 caracteres ou pelo menos um caractere,
scan(/.{3}|.+/) , na string de entrada, $_ (neste caso, espera-se que a entrada venha da entrada padrão) e coloca cada correspondência em uma matriz,
- une a matriz em uma string com um '+' conectando cada elemento,
join("+") ,
- e imprime terminado por uma nova linha
puts .
Por exemplo
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
Observe que ele não adiciona nenhum '+' à direita.