-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On Thursday 06 June 2002 21:30, Joerg Johannes wrote: > At university, we have an old spectro-photometer, that spits out its data > in ASCII formatted files. The problem is, The data I get is sorted in lines > rather than in columns (See examples below). Is there a progam (preferably > command-line) that can do swap the rows to columns, and vice-versa. I need > something that makes "Search and replace two spaces by a \newline" and > afterwards a bit of rectangle-editing in emacs obsolete. > > Here comes the example: > ... The file I get from the photometer ... > 0.000 -0.000014 0.007990 0.013480 0.017795 0.021675 0.028663 > 0.032588 0.038895 0.044002 0.050834 1.000 -0.000962 0.038026 > 0.069427 0.085865 0.108307 0.140563 0.166330 0.195794 0.223759 > 0.252516 --- end file --- > > ... And I have to change it to ... > -0.000014 -0.000962 > 0.007990 0.038026 > 0.013480 0.069427 > 0.017795 0.085865 > 0.021675 0.108307 > 0.028663 0.140563 > 0.032588 0.166330 > 0.038895 0.195794 > 0.044002 0.223759 > 0.050834 0.252516 > --- end file --- > > This is a rather short example, this is OK to be done by hand, but imagine > 20 rows of 20 samples... Annoying, isn't it?
I have written a little python script to do it. Hope it works for you. :-) #!/usr/bin/env python import re,sys,string if len(sys.argv) != 2: print "Usage: %s infile" %(sys.argv[0]) sys.exit() infile = string.replace(open(sys.argv[1]).read(),"\n"," ") pattern = re.compile(r"(?:(.+?[ ]) *)",re.DOTALL) numbers = pattern.findall(infile) outp = "" for i in range(len(numbers)): if (i%2): outp+='\t' if float(numbers[i])>=0: outp+=' ' outp+=numbers[i]+(' '*(10-len(numbers[i]))) if float(numbers[i])>=0: outp+=' ' if (i%2): outp+='\n' print outp - -- Matias Hermanrud Fjeld Computers are like air conditioners. They stop working when you open Windows. -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.0.6 (GNU/Linux) Comment: For info see http://www.gnupg.org iD8DBQE8/+8oInG+hz/aOQARAsJWAKCp4H5VgVTJbfelNLgBq62zIVu1ZQCfXpAw GKogJJWopvq5t25LPbjWhYI= =Uh7v -----END PGP SIGNATURE----- -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]