Si sed no es imprescindible, usar Ruby podría ser una alternativa. El intérprete de Ruby ruby
, se puede usar como sed y awk ejecutándolo con la -n
opción que lo hace iterar sobre su entrada. El intérprete puede ser alimentado con Ruby one-liner agregándolo como argumento a la -e
opción (que le dice al intérprete que interprete el argumento en -e
lugar de buscar un script en un archivo).
Para este problema en particular, puede usar el siguiente one-liner (adaptado de /programming//a/3184271/789593 ):
ruby -ne 'puts $_.scan(/.{3}|.+/).join("+")'
En lenguaje sencillo
- coincide con 3 caracteres o al menos un carácter,
scan(/.{3}|.+/)
en la cadena de entrada $_
(en este caso, se espera que la entrada provenga de la entrada estándar) y coloca cada coincidencia en una matriz,
- se une a la matriz en una cadena con un '+' la conexión de cada elemento,
join("+")
,
- e imprime terminado por una nueva línea
puts
.
Por ejemplo
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
Tenga en cuenta que no agrega ningún '+' final.