From: Joel VanderWerf Date: 2009-04-28T04:21:34+09:00 Subject: Re: Group several lines into one line Jes�s Gabriel y Gal�n wrote: > On Mon, Apr 27, 2009 at 8:25 PM, Dirk Dre wrote: >> After sitting at this problem for hours without much progress, now is >> the time that I need your help. Btw. I'm quite new to ruby. >> >> I have a file that looks like this: >> >> 00-04-00;Austragungssystem f�r l�ngliche oder >> 00-04-00;quadratische Lagerr�ume inklusive 3- >> 00-04-00;poligen Wielandstecker/Gegenstecker >> 00-04-00;Technische Daten: >> 00-04-00;Elektrischer Anschluss: 230V / 50Hz >> 00002274;Wilo Temperaturf�hler TF >> 00002274;Temperaturschalter mit Einstellknopf >> 00002274;einschlie�lich 2 St�ck Federspannb�ndern >> 00002274;zum Anlegen an Rohre bis DN 100. >> 00002274;Max. Betriebsspannung: 250 V >> 00002274;Max. Schaltleistung: 4 A >> 00002274;Schutzart: IP 43 >> 00002274;Schaltbereich: 30 oC bis 90 oC >> 00002274;Fabrikat: WILO >> 00002274;Typ: Temperaturschalter TF >> >> what i need is to group lines with the same serialnumber >> (eg. 00-04-00, 00002274) into one line like this: >> >> 00-04-00;Austragungssystem f�r l�ngliche oder quadratische Lagerr�ume >> inklusive 3-poligen Wielandstecker/Gegenstecker Technische Daten: >> Elektrischer Anschluss: 230V / 50Hz > > > Something like this (untested) might get you started: > > s = "00-40..." #your string > h = Hash.new {|h,k| h[k] = ""} > s.each do |line| > key, value = line.split(";") > h[key] << value.chomp > end That won't quite work if there is a second semicolon on the line. Try: key, value = line.scan(/([^;]*);(.*)/).first -- vjoel : Joel VanderWerf : path berkeley edu : 510 665 3407