Вопрос по ruby – найти строку из текстового файла и удалить эту строку RUBY

3

У меня есть текстовый файл, который содержит некоторые цифры, и я хочу найти конкретное число, а затем удалить эту строку. Это содержимое файла

    83087
    308877
    214965
    262896
    527530

Поэтому, если я хочу удалить 262896, я открою файл, найду строку и удалю эту строку.

grep -v 262896 numbers.list > numbers.list.out Matheus Moreira
Я отказался от голосования, потому что вы не приложили никаких усилий, прежде чем просить, ни о чем другом, но, пожалуйста, не пишите "ruby". во всех кепках. Andrew Grimm

Ваш Ответ

1   ответ
5

чтобы написать строки, которые вы хотите сохранить. что-то вроде этого должно сделать это:

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
$

Вы также можете сделать это только в памяти, без временного файла. Но объем памяти может быть огромным в зависимости от размера файла. Вышеупомянутое решение загружает только одну строку за раз в памяти, поэтому оно должно нормально работать с большими файлами.

-- Надеюсь, поможет --

Похожие вопросы