• ベストアンサー

Rubyで外部ファイル内の文字列を削除したい

RubyでTeXファイルを出力しようとしているのですが、 追加書き込みをする際に、End Of File の前の一番最後の文字列 である「\end{document}」が邪魔なので削除したいのですが、どうしても 案が見つかりません。 なにか良い方法をご存知の方はぜひご教授ください。おねがいします。

質問者が選んだベストアンサー

  • ベストアンサー
  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.3

よっぽどでかいファイルが対象で、ディスクも余裕がないとかいう制限がないのなら、 ARGV.each do |file| data = "" lastline = "" open(file, 'r') do |f| data = f.readlines lastline = data.pop end File.rename file, file + ".bak" open(file, "w") do |f| f.write data f.puts "この行を追加" #f.write lastline # 元の最終行を復活するのならこれも実行 end end こんな感じに 1. ファイルを配列に読み込み 2. 最終行を削除し 3.ファイルを書き込み用にオープンしなおして 4. 最終行を削除したデータと追加データを書き出す ってな具合でいいのでは? エラー処理とかはしていないのでその辺はよしなに。

glanzen
質問者

お礼

どうもありがとうございます。 調べながら、試してみたら上手くいきました。

その他の回答 (2)

  • asdf24
  • ベストアンサー率54% (27/50)
回答No.2

追記したいファイルを r+ で開いて 邪魔な文字列の手前まで seek でファイルポインタを戻すというのは?

glanzen
質問者

お礼

回答を元に調べてみました。 上手くいきそうな手が見つかったので試してみます。 ありがとうございました。

  • SAYKA
  • ベストアンサー率34% (944/2776)
回答No.1

ファイル操作の削除の基本は 書き出しの時にそこを飛ばす事 じゃないのかな

glanzen
質問者

お礼

早い回答ありがとうございました。 お礼が遅くなってしまい申し訳ございません。 ファイルの入出力は今まで勉強したことがなかったので、 困っていましたが、参考にして調べてみたいと思います。

関連するQ&A