merlyn@iwarp.intel.com (Randal L. Schwartz) (05/05/91)
In article <1991May3.225202.29639@umbc3.umbc.edu>, rouben@math16 (Rouben Rostamian) writes: | In article <1991May3.213550.17246@ge-dab.GE.COM> brooks@sundance7.dab.ge.com (Stephen Brooks) writes: | > I have a sed question for you gurus: assume I have a file of the form | > | >name1; A1.1 B10.20 C100.300, | > D101.25 E202.50, | > F300.7 | >name2; Z44.33 Y409.45 | >name3; X777.77 W6.6, | > V32.15 | > | >where a comma (,) represents a continuation character. I need to "massage" | >this into something which looks like this: | > | >name1; A1.1 B10.20 C100.300 D101.25 E202.50 F300.7 | >name2; Z44.33 Y409.45 | >name3; X777.77 W6.6 V32.15 | > | >Can I do this in sed? | | Yes. Here it is: | | sed -n ' | :loop | /,$/{N | bloop | } | s/,\n//g | s/ */ /g | p' <inputfile And in Perl... (see, I waited for the sed solution to be posted this time :-): perl -pe 'while (/,\s*$/) {$_ .= <STDIN>; s/,\s*\n\s*/ /;}' <in >out (which means, while you see a comma at the end of the line (ignoring trailing whitespace), append the next input line, and replace the comma, optional whitespace, newline, and more optional whitespace with a single space.) print "Just another Perl hacker," -- /=Randal L. Schwartz, Stonehenge Consulting Services (503)777-0095 ==========\ | on contract to Intel's iWarp project, Beaverton, Oregon, USA, Sol III | | merlyn@iwarp.intel.com ...!any-MX-mailer-like-uunet!iwarp.intel.com!merlyn | \=Cute Quote: "Intel: putting the 'backward' in 'backward compatible'..."====/