Если вы хотите сделать это прямо из командной строки, попробуйте
cat prog | ruby -pe '$_.gsub!(/{{{(.+?)}}}/) { File.read $1 }'
Как указывает Алекс Д, .+
является жадным и соответствует как можно большему числу символов.С другой стороны, .+?
пытается найти как несколько символов, насколько это возможно.
В командной строке Ruby -p
ожидается, что вы обновите значение переменной $_
.Следовательно использование мутации gsub!
вместо gsub
, которая делает копию.Тот же результат может быть достигнут при использовании -n
.
cat prog | ruby -ne 'puts $_.gsub(/{{{(.+?)}}}/) { File.read $1 }'