난 당신 때문에 파일 시스템의 한계를 안전하게 그렇게 할 수 있다고 생각합니다.
실제 편집을 원할 경우 메모리에 쓰고 편집 한 다음 이전 파일을 바꿀 수 있습니다. 그러나이 접근 방식에는 적어도 두 가지 문제가 있음에 유의하십시오. 첫째, 프로그램을 다시 작성하는 도중에 중지하면 불완전한 파일이 생성됩니다. 둘째, 파일이 너무 크면 메모리를 먹게됩니다. 그 라인을 따라
file_lines = ''
IO.readlines(your_file).each do |line|
file_lines += line unless <put here your condition for removing the line>
end
<extra string manipulation to file_lines if you wanted>
File.open(your_file, 'w') do |file|
file.puts file_lines
end
뭔가 작동하지만 임시 파일을 사용하는 것이 훨씬 안전하고 표준 접근 방식
이 같은 원치 않는 선이었다 보였다
귀하의 조건이 될 수 아무것도
require 'fileutils'
File.open(output_file, "w") do |out_file|
File.foreach(input_file) do |line|
out_file.puts line unless <put here your condition for removing the line>
end
end
FileUtils.mv(output_file, input_file)
,
file_lines += line unless line.chomp == "aaab"
입니다한다 예를 들어, "aaab"행을 제거합니다.
이 삽입되어 있어야합니까? – tokland
"inplace"의 의미는 무엇입니까? – bugerrorbug
기존 파일 (현재 위치 업데이트)을 수정하거나 새 파일을 만들 수 있습니다. 이 마지막 접근 방식은 일반적으로 비파괴적인 방식으로 선호됩니다. '-i' 옵션을 사용하거나 사용하지 않고'sed'를 확인하십시오. – tokland