Jika bukan merupakan keharusan menggunakan Ruby mungkin menjadi alternatif. Penerjemah Ruby ruby
,, dapat digunakan seperti sed dan awk dengan menjalankannya dengan -n
opsi yang membuatnya mengulangi inputnya. Penerjemah kemudian dapat diberi makan dengan Ruby satu-liner dengan menambahkannya sebagai argumen pada -e
opsi (yang memberi tahu penerjemah untuk menafsirkan argumen -e
daripada mencari skrip dalam file).
Untuk masalah khusus ini, Anda dapat menggunakan one-liner berikut (diadaptasi dari https://stackoverflow.com/a/3184271/789593 ):
ruby -ne 'puts $_.scan(/.{3}|.+/).join("+")'
Dalam bahasa sederhana itu
- cocok dengan 3 karakter atau setidaknya satu karakter,
scan(/.{3}|.+/)
dalam string input, $_
(dalam hal ini input diharapkan berasal dari standar) dan menempatkan setiap kecocokan dalam array,
- bergabung dengan array menjadi string dengan tanda '+' yang menghubungkan setiap elemen
join("+")
,,
- dan mencetaknya dihentikan oleh baris baru
puts
.
Sebagai contoh
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
Perhatikan bahwa itu tidak menambahkan trailing '+'.