Sed bir zorunluluk değilse Ruby kullanmak bir alternatif olabilir. Ruby yorumlayıcısı, girişi üzerinden yineleme yapan seçenekle ruby
çalıştırarak sed ve awk gibi kullanılabilir -n
. Daha sonra yorumlayıcı, bir -e
seçeneğe argüman olarak ekleyerek Ruby bir astarla beslenebilir (bu, yorumlayıcıya -e
bir dosyada komut dosyası aramak yerine argümanını yorumlamasını söyler ).
Bu özel sorun için aşağıdaki tek astarı kullanabilirsiniz ( https://stackoverflow.com/a/3184271/789593 adresinden uyarlanmıştır ):
ruby -ne 'puts $_.scan(/.{3}|.+/).join("+")'
Düz dilde
scan(/.{3}|.+/)
giriş dizesinde 3 karakterle veya en az bir karakterle eşleşir $_
(bu durumda girişin standart girişten gelmesi beklenir) ve her eşleşmeyi bir diziye koyar,
- diziyi her bir öğeyi bağlayan '+' ile bir dizeye ekler
join("+")
,
- ve bir satırsonu tarafından sonlandırıldığını yazdırır
puts
.
Örneğin
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
Herhangi bir sondaki '+' eklemediğini unutmayın.