上下文
包含需要更新的代码的大型ruby项目。由于匹配结果的数量很重要,我想进行大规模搜索并用正则表达式替换。
问题
鉴于在各种红宝石文件中精心挑选这些可能的字符串:
Resque.enqueue Layers::ReprocessLayers, item.id, true
Resque.enqueue_in 1.days, Backoffice::DeleteS3File, "much-bucket", new_file.key
Resque.enqueue OrderManagement::ReprocessOrder, params[:id]
Resque.enqueue OrderManagement::ReprocessItem, order.id, item.id
对于以.id
开头的所有字符串,我想将所有匹配的.id.to_s
替换为Resque
。 Resque
关键字之前很可能是空格。
答案 0 :(得分:2)
您可以使用此sed命令:
sed '/^[[:blank:]]*Resque/s/\.id/&.to_s/g' file
模式分手:
/^[[:blank:]]*Resque/ # match lines starting with whitespaces and Resque
s/\.id/&.to_s/g # replace .id with .id_.to_s