在Ruby中实现文件包含的简单方法是什么,例如如果文本文件包含{{{stuff.txt}}},则stuff.txt的内容将包含在内。我想也许是这样的:
cat prog | ruby -pe 'gsub /{{{.+}}}/, File.open("$0").read'
...涉及到eval(),但无法使其正常工作。
答案 0 :(得分:2)
s.gsub(/{{{(.+?)}}}/) { |m| File.read($1) }
几点:
答案 1 :(得分:1)
如果您想直接从命令行执行此操作,请尝试
cat prog | ruby -pe '$_.gsub!(/{{{(.+?)}}}/) { File.read $1 }'
正如Alex D所指出的那样,.+
是贪婪的并且尽可能多地匹配角色。另一方面,.+?
尝试匹配为少数字符。
Ruby的命令行-p
希望您更新$_
变量的值。因此使用变异gsub!
而不是gsub
来制作副本。使用-n
可以获得相同的结果。
cat prog | ruby -ne 'puts $_.gsub(/{{{(.+?)}}}/) { File.read $1 }'