使用Ruby替换文件中的特定行

Evi*_*fin 3 ruby overwrite line

我有一个文本文件(a.txt),如下所示.

open
close
open
open
close
open
Run Code Online (Sandbox Code Playgroud)

我需要找到一种用"关闭"替换第3行的方法.我做了一些搜索,大多数方法都涉及搜索线而不是替换它.不能真的在这里做,因为我不想把所有"开放"变为"关闭".

基本上(对于这种情况)我正在寻找IO.readlines("./ a.txt")[2]的写版本.

Yam*_*vic 6

怎么样的:

lines = File.readlines('file')
lines[2] = 'close' << $/
File.open('file', 'w') { |f| f.write(lines.join) }
Run Code Online (Sandbox Code Playgroud)