2015-01-02 6 views
0

새 파일을 만들지 않고 Ruby의 파일에서 빈 줄을 삭제하려면 어떻게해야합니까?새 파일을 만들지 않고 파일에서 빈 줄을 삭제합니다.

파일을 한 줄씩 읽고 비어있는 줄만 새 파일에 쓰는 몇 가지 예를 읽었습니다. 이 방법에 대한 대안이 있습니까?

sed one-liner와 같은 것이 있습니까?

+0

'파일 = 'something.txt을'; File.write (파일, File.read (파일) .gsub (/ \ n + /, "\ n"))'. 큰 파일로 작업 할 수 있도록 말한 것처럼 파일을 한 줄씩 읽는 것이 좋습니다. – Adrian

+0

애드리안에게 감사드립니다. 이것은 마술을했습니다. 당신은 gsub 코드에 어떤 단어를 넣으시겠습니까? 나는 대체로 텍스트를 대체하기 위해 그것을 사용했다, 우리는 "\ n +"을 "\ n"으로 바꾼다. 나는 이것을 얻을 수 없었다. – vikas027

+1

[문서 읽기] (http://www.ruby-doc.org/core-2.1.5/String.html#method-i-gsub). – Adrian

답변

3

비록 해킹 : "파일 열기 공백을 제거하고 다시 자체에 쓰기",이 작품 :

file_name = './blanked.txt' 

original = File.open(file_name, 'r') { |file| file.readlines } 
blankless = original.reject{ |line| line.match(/^$/) } 

File.open(file_name, 'w') do |file| 
    blankless.each { |line| file.puts line } 
end