>>973
> これを1回のFile.openで書きたいのですが

# 読み書き両用でファイルをオープンする
File.open("text.txt", "r+") do |f|
 # 排他的ロックをかける
 f.flock(File::LOCK_EX)
 # ファイルを読み込み
 buf = []
 f.each do |line|
  buf << line if line =~ /^¥w+$/
 end
 # ファイルポインタを先頭に戻す
 f.rewind()
 # ファイルサイズをゼロに切り詰める
 f.truncate(0)
 # ファイルを書き込み
 buf.each {|line| f.write(line) } # or f.write(buf.join)
end # ファイルが閉じられるときにロックも自動的に解除される