いくつかの数値を含むテキスト ファイルがあり、特定の数値を検索してその行を削除したいと考えています。これがファイルの内容です
83087
308877
214965
262896
527530
したがって、262896 を削除する場合は、ファイルを開き、文字列を検索してその行を削除します。
いくつかの数値を含むテキスト ファイルがあり、特定の数値を検索してその行を削除したいと考えています。これがファイルの内容です
83087
308877
214965
262896
527530
したがって、262896 を削除する場合は、ファイルを開き、文字列を検索してその行を削除します。
保持したい行を書き込むには、一時ファイルを開く必要があります。このような行に沿った何かがそれを行う必要があります:
require 'fileutils'
require 'tempfile'
# Open temporary file
tmp = Tempfile.new("extract")
# Write good lines to temporary file
open('sourcefile.txt', 'r').each { |l| tmp << l unless l.chomp == '262896' }
# Close tmp, or troubles ahead
tmp.close
# Move temp file to origin
FileUtils.mv(tmp.path, 'sourcefile.txt')
これは次のように実行されます。
$ cat sourcefile.txt
83087
308877
214965
262896
527530
$ ruby ./extract.rb
$ cat sourcefile.txt
83087
308877
214965
527530
$
一時ファイルなしで、メモリ内のみで実行することもできます。ただし、ファイル サイズによっては、メモリ フットプリントが非常に大きくなる場合があります。上記のソリューションは、一度に 1 行ずつメモリにロードするだけなので、大きなファイルでも問題なく動作するはずです。
- それが役に立てば幸い -