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.