как перенести строку из одного файла в другой системно в ruby?
у меня есть массив который я получаю из файла
urls = IO.readlines("man.txt")
далее в цикле делаю что то
urls.each do |url|
url = urls.at(i)
some code..
# записываю в новый файл текущую строку
File.open('url__success.txt', 'a+'){ |file| file.write urls.at(i) }
# в конце пытаюсь удалить текущую строку и заменить пустой системно
system("sed -e 's/^/\n/' man.txt")
end
я получаю
sed: -e expression #1, char 5: unterminated `s' command
хотя в чистом виде sed из консоли отрабатывает. любые другие варианты? также я не хочу чтобы url = urls.at(i) эти значения сбивались по ходу выполнения цикла
Ответы (1 шт):
Общая практика трансформации данных не подразумевает удаление обработанной строки из файла. После обработки источник либо уходит в архив, либо просто удаляется, поэтому вся работа с ним сводится к чтению, остальное просто неудобно, зачастую бессмысленно и вдобавок это большие накладные расходы, потому что придется перезаписывать файл при каждом удалении строки почти целиком и если все внезапно сломается, то ты рискуешь получить пустой файл источника).
Может быть таким способом ты хочешь отслеживать прогресс операции? Если да, то можно гораздо проще: итерируйся по строкам с индексом .each_with_index |row, idx| и печатай индекс в консоль. Значение индекса будет являться количеством обработанных строк и в случае падения скрипта ты можешь начать с последнего значения индекса .drop(567).each_with_index |val, idx|. В этом примере цикл пропустит 567 строк и начнет с 568.