我有一个从文件中获取的数组
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 表达式 #1,字符 5:未终止的 `s' 命令
尽管 sed 以纯粹的形式从控制台工作。还有其他选择吗?我也不希望url = urls.at(i)这些值随着循环的进行而丢失
数据转换的一般做法是不从文件中删除已处理的行。处理后,源文件要么进入存档,要么被删除,所以所有的工作都归结为读取,剩下的就是不方便,通常毫无意义,此外这是一个很大的开销,因为你必须重写文件几乎每次你删除一行时,如果一切突然中断,那么你就有可能得到一个空的源文件)。
也许您想通过这种方式跟踪操作的进度?如果是,那么它可以更简单:使用索引遍历行并将索引
.each_with_index |row, idx|
打印到控制台。索引值将是处理的行数,如果脚本崩溃,您可以从最后一个索引值开始.drop(567).each_with_index |val, idx|
。在此示例中,循环将跳过 567 行并从 568 开始。