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