- 締切済み
Rubyで特定の位置に1行を挿入したい
あるファイルを読み込んで、もし行と行の間に、特定の文字列がなければその行間に文字列を挿入したいと思っています。 読み込むファイルは以下のような形になっています。 sample.txt ------------------------------------------ @config['network']['dns'].sort.each do | key, value | case key when xxx ........ @config['network'].sort.each do | key, value | case key when xxx ........ このような形が続く。。。 ------------------------------------------ この場合に、"@config~"の行と、"case key"の行の間にもし何の行もなければ、そこに"next unless value"の行を挿入したいのですが、どのようにすれば可能でしょうか。 期待値 ------------------------------------------ @config['network']['dns'].sort.each do | key, value | next unless value case key when xxx ........ @config['network'].sort.each do | key, value | next unless value case key when xxx ........ ------------------------------------------ 初心者の質問ですみませんが、教えていただけると助かります。 よろしくお願いいたします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- ki073
- ベストアンサー率77% (491/634)
テキストをメモリ上に全部読み込んで作業した方が簡単なのでそのやり方を書きます。 変数strに読みまれているとすると str=str.gsub(/^@config.+\n(?=case key$)/){|s| s+"next unless value\n"} あるいは str.gsub!(/^@config.+\n(?=case key$)/){|s| s+"next unless value\n"} で可能です。 (?=)は先読み(lookahead)を指示しています。