Spezzettamento (splitting) di un file
Angelo Naselli
na_spa@libero.it
Lun 10 Mar 2008 13:40:44 CET
domenica 9 marzo 2008 alle 14:12, Giuliano ha scritto:
> Mi piacerebbe farlo mediante scripting di bash, se fosse possibile, ma
> non mi viene in mente nulla da provare.
> Pensare al C (getline) mi é facile, ma passare all'azione non lo é
> altrettanto.
Se il C con la getline ti è familiare uno script ruby ti viene facilissimo da
usare ed ammette le regular expression.
Questo esempio (non l'ho provato cerca una riga che contiene una stringa
in un file e la sostituisce con un altra:
#!/usr/bin/env ruby
def modify_File (name, stringa_da cercare_nella_linea, stringa_da_cambiare)
old_file = name
new_file = name + ".new"
old = File.open(old_file)
new = File.open(new_file, "w")
while old.gets do
fileLine = $_
if (fileLine.index(stringa_da cercare_nella_linea) )
new.print stringa_da_cambiare) + "\n"
else
new.print fileLine
end
end
old.close
new.close
File.delete(old_file)
File.rename(new_file, old_file)
end
puts "inizio"
modify_File prova.log, comp_pippo, comp_gino
puts "fine"
Ma puoi usare anche una cosa come in questo esempio (un pezzo cut&paste da uno script che uso),
che legge un file di configurazione (.ini) a sezioni ed organizza i dati di sezione in un hash:
found = false;
appdata = Hash.new
f = File.new("file.ini")
begin
while (line = f.readline)
aline = line.chomp
if aline == "[" + name + "]"
found = true;
elsif aline.length > 0 && found
data = aline.split("=");
temp = { data[0].strip => data[1].strip }
appdata = appdata.merge(temp)
else
found = false
end
end
rescue EOFError
f.close
end
Non ho provato tutto e me ne scuso, ho solo fatto del cut& paste da pezzi di programmi che accedono a dei file
dai un'occhiata qui per le stdlib per esempio http://www.ruby-doc.org/stdlib/
Ciao
Angelo
-------------- parte successiva --------------
Un allegato non testuale è stato rimosso....
Nome: non disponibile
Tipo: application/pgp-signature
Dimensione: 189 bytes
Descrizione: This is a digitally signed message part.
Url: http://lists.linux.it/pipermail/glug/attachments/20080310/006955e2/attachment.pgp
Maggiori informazioni sulla lista
glug