Problem z plikiem i zapisem

Witam, mam w pliku dane postaci:

16d8eea26a1011e0ae85e0346db2a7b0
174010d0720011e0b5e9d0346db2a579
17bf14cc6e7011e08244303486e769d7

Chcę z tego pliku dczytać te dane ale zapisać je w drugim pliku w postaci:

‘16d8eea26-a101-1e0a-e85e-0346db2a7b0’, ‘174010d0-7200-11e0-b5e9-d0346db2a579’, ‘17bf14cc-6e70-11e0-8244-303486e769d7’

Mam taki kod:
save.txt plik w którym zapisuje rezultat
data.txt - plik z danymi

f = File.open(‘save.txt’, ‘w’)
file = ‘data.txt’
File.readlines(file).each do |line|
str = line.insert(8, ‘-’).insert(13, ‘-’).insert(18, ‘-’).insert(23, ‘-’)
f.write “’” + str + “’,”
end

dostaje rezultat:

'18a073d0-5daf-11e0-b517-803486e769d7
','2de92e4e-6f89-11e0-a16a-003486cbeec4
','3c6c30e6-6f80-11e0-b680-00346db2ad2e

Jak napisać taki skrypt aby nie wpisywał mi tego to nowej linii a dal rezultat ja powyżej?

żeby to zostało w mare podobne do tego co masz to np tak:

[code=ruby]#!/usr/bin/ruby

a = []
File.readlines(‘a.txt’).each do |l|
a << l.insert(8, ‘-’).insert(13, ‘-’).insert(18, ‘-’).insert(23, ‘-’)
end

File.open(‘b.txt’,‘w’) do |f|
f.write a.map(&:chomp!).map{|x| x.insert(0,"’").insert(-1,"’")}.join(’,’)
end[/code]
Tu masz wykorzystane takie same techniki więc chyba wszytsko zrozumiałe jak by co to pisz. To ktoś wytłumaczy.

brakuje jeszcze apostrofów, jak je dodać ?

Ok zrobiłem, dzięki wielkie

Dodałem apostrofy, nie zauważyłem ich na początku, w poscie z kodem masz już z apostrofami.

nie rozumiem, w pierszym pliku przy konwersji danych zadziałało, teraz dodałem podobne dane i pojawił się błąd:

dashes.rb:8:in block (2 levels) in <main>': undefined methodinsert’ for nil:NilClass (NoMethodError)
from dashes.rb:8:in map' from dashes.rb:8:inblock in ’
from dashes.rb:7:in open' from dashes.rb:7:in

Ok problem rozwiązany :slight_smile: