rows to columns - different size


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting rows to columns - different size
# 1  
Old 01-10-2011
Data rows to columns - different size

hi buddies;

i want to convert lines to tabs with a different sized. this is my text:
Code:
192.14.2.1	Sector=1	height	2500
	Sector=3	height	2500
	Sector=2	height	2500
	PredefRbsScannerGpeh=1	fileLocation	/c/pm_data/
	SectorAntenna=3,AntennaBranch=A	fqBandHighEdge	21550
	SectorAntenna=3,AntennaBranch=B	fqBandHighEdge	21550
	SectorAntenna=1,AntennaBranch=B	fqBandHighEdge	21550
	SectorAntenna=1,AntennaBranch=A	fqBandHighEdge	21550
	SectorAntenna=2,AntennaBranch=B	fqBandHighEdge	21550
	SectorAntenna=2,AntennaBranch=A	fqBandHighEdge	21550
	SectorAntenna=3,AntennaBranch=A	fqBandLowEdge	21400
	SectorAntenna=3,AntennaBranch=B	fqBandLowEdge	21400
	SectorAntenna=1,AntennaBranch=B	fqBandLowEdge	21400
	SectorAntenna=1,AntennaBranch=A	fqBandLowEdge	21400
	SectorAntenna=2,AntennaBranch=B	fqBandLowEdge	21400
	SectorAntenna=2,AntennaBranch=A	fqBandLowEdge	21400
	Sector=1	geoDatum	WGS84
	Sector=3	geoDatum	WGS84
	Sector=2	geoDatum	WGS84
	Iub=Iub17,IubDataStreams=1	hsDataFrameDelayThreshold	60
	RbsLocalCell=S2C1	hsCodeResourceId	0
	RbsLocalCell=S3C1	hsCodeResourceId	0
	RbsLocalCell=S1C1	hsCodeResourceId	0
	Sector=1,Carrier=1	frequencyPlane	1
	Sector=3,Carrier=1	frequencyPlane	1
	Sector=2,Carrier=1	frequencyPlane	1

192.14.7.33	Sector=1	height	2000
	Sector=3	height	2000
	Sector=2	height	2000
	PredefRbsScannerGpeh=1	fileLocation	/c/pm_data/
	SectorAntenna=3,AntennaBranch=A	fqBandHighEdge	21550
	SectorAntenna=3,AntennaBranch=B	fqBandHighEdge	21550
...

the file seperators are TAB. i want to get this text as:
Code:
192.14.2.1	Sector=1	height	2500	PredefRbsScannerGpeh=1	fileLocation	/c/pm_data/	SectorAntenna=3,AntennaBranch=A	fqBandHighEdge	21550	SectorAntenna=3,AntennaBranch=A	fqBandLowEdge	21400	Sector=1	geoDatum	WGS84	Iub=Iub17,IubDataStreams=1	hsDataFrameDelayThreshold	60	RbsLocalCell=S2C1	hsCodeResourceId	0	Sector=1,Carrier=1	frequencyPlane	1
		Sector=3	height	2500                                                            SectorAntenna=3,AntennaBranch=B	fqBandHighEdge	21550	SectorAntenna=3,AntennaBranch=B	fqBandLowEdge	21400	Sector=3	geoDatum	WGS84                                                           		RbsLocalCell=S3C1	hsCodeResourceId	0 	Sector=3,Carrier=1	frequencyPlane	1
		Sector=2	height	2500                                                            SectorAntenna=1,AntennaBranch=B	fqBandHighEdge	21550	SectorAntenna=1,AntennaBranch=B	fqBandLowEdge	21400	Sector=2	geoDatum	WGS84                                                           		RbsLocalCell=S1C1	hsCodeResourceId	0 	Sector=2,Carrier=1	frequencyPlane	1
	                                                                            	     		SectorAntenna=1,AntennaBranch=A	fqBandHighEdge	21550	SectorAntenna=1,AntennaBranch=A	fqBandLowEdge	21400
	                                                                             	     		SectorAntenna=2,AntennaBranch=B	fqBandHighEdge	21550	SectorAntenna=2,AntennaBranch=B	fqBandLowEdge	21400
	                                                                             	     		SectorAntenna=2,AntennaBranch=A	fqBandHighEdge	21550	SectorAntenna=2,AntennaBranch=A	fqBandLowEdge	21400
192.14.7.33	Sector=1	height	2500	PredefRbsScannerGpeh=1	fileLocation	/c/pm_data/	...
		Sector=3	height	2500
		Sector=2	height	2500	
...

again, the file seperators are TAB.

hope it is clear. Smilie
# 2  
Old 01-10-2011
It looks like the result has top leve key IP, List of sectors, data per IP, Data per SectorAntenna. This is not relational, but more of a block reformat. Do the SectorAntenna rows relate to the Sector rows? Well, there is no disputing report taste!

For each block, you need to put the list data into files or shell variable arrays, then at the end of block, determine the longest file in lines or array, and generate that many lines with the missing fields in the rectangular field matrix blanked out. Since the end of a block is a line for the next block, you need to store that so it can start the next block. Pick a shell and look into variables that are arrays of strings. Google for something like "bash tutorial array variables" and teach yourself your chosen shell. Bash is a LINUX favorite, and ksh is pretty popular everywhere. Shell capabilities vary a bit by version.

Array variables
# 3  
Old 01-11-2011
actually the structure of my file is like this:
Code:
IP1	AttribA	Param1 Value
AttribB	Param1	Value
AttribC	Param1	Value
...
AttribF	Param2	Value
AttribG	Param2	Value
AttribH	Param2	Value
AttribJ	Param2	Value
...
IP2	AttribW	Param1 Value
AttribX	Param1	Value
AttribY	Param1	Value
...
AttribZ	Param2	Value
...

No matter what "Attrib" or "Value" is, i need to organize file according to "Param" values grouping with "IP"s. Desired output is:

Code:
IP1	AttribA	Param1	Value	AttribF	Param2	Value	...
	AttribB	Param1	Value	AttribG	Param2	Value
	AttribC	Param1	Value	AttribH	Param2	Value
				AttribJ	Param2	Value

IP2	AttribW	Param1	Value	AttribZ	Param2	Value	...
	AttribX	Param1	Value
	AttribY	Param1	Value
...

Some "Param"s have 1 "Attrib"s, some have 3 "Attrib"s, some have 6 "Attrib"s, etc... These "Param"s must be written as columns. I ve tried with awk but i couldnot determine how many tabs should be placed in each line since there is no fixed number of "Attrib"s.
# 4  
Old 01-11-2011
Well, for each IP you are building a 2d matrix of fixed width and variable height, so whatever language you use must have array storage and array length detection. Then, for each IP, you can size and fill that matrix. If you want to sort or relate the vectors at the same time, you have that opportunity. It's almost something 'paste' could do, in multiple passes for the different column sets, but for the per-IP blocking. Awk, shell, PERL and such can do this sort of detection, storage and presentataion.

Now, if you annotatted the text and sorted it, that might make it possible to do without vectors. You need to smear the IP onto every line and mark the lines with a sort order field so AttribA comes out on the line before AttribF when you sort; then, the postprocessing is simpler.

Last edited by DGPickett; 01-11-2011 at 03:08 PM..
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Size Selecting rows

I have a rather convoluted script that I use to extract information from CSV files: sed '1d' PeakTable.txt | awk -F ',' '!/Ladder/{ if ( $4 > 430 && $4 < 490 && $5 > 45 ) print $2, $5; else print $2, 0 }' | awk '{a+=$2}END{for(i in a){print i, a}}' | sed 's/\(\)\(\) /\10\2 /' | sort | awk... (4 Replies)
Discussion started by: Xterra
4 Replies

2. Shell Programming and Scripting

Rows to columns

Hi, I have a text file with records as below Service Contract: Account Type: Client Number: Group Number: Account Currency: I want to print 2nd,3rd and 5th as a separate column, like -> Account Type: ,Client Number: ,Account Currency: How can I do that? (1 Reply)
Discussion started by: dsid
1 Replies

3. Shell Programming and Scripting

Compare 2 csv files by columns, then extract certain columns of matcing rows

Hi all, I'm pretty much a newbie to UNIX. I would appreciate any help with UNIX coding on comparing two large csv files (greater than 10 GB in size), and output a file with matching columns. I want to compare file1 and file2 by 'id' and 'chain' columns, then extract exact matching rows'... (5 Replies)
Discussion started by: bkane3
5 Replies

4. Shell Programming and Scripting

Columns to rows

Hi, I have a big file, with thousands of rows, and I want to put every 7 rows in a line. Input file: str1, val2, val3 str2, val4, val5 str3, val22, val33 str4, val44, val55 str5, val6, val7 str6, val77, val88 str7, val99, val00 str1, som2, som3 str2, som4, som5 str3, som22, som33 ... (11 Replies)
Discussion started by: apenkov
11 Replies

5. Shell Programming and Scripting

Evaluate 2 columns, add sum IF two columns match on two rows

Hi all, I know this sounds suspiciously like a homework course; but, it is not. My goal is to take a file, and match my "ID" column to the "Date" column, if those conditions are true, add the total number of minutes worked and place it in this file, while not printing the original rows that I... (6 Replies)
Discussion started by: mtucker6784
6 Replies

6. Shell Programming and Scripting

Deleting all the fields(columns) from a .csv file if all rows in that columns are blanks

Hi Friends, I have come across some files where some of the columns don not have data. Key, Data1,Data2,Data3,Data4,Data5 A,5,6,,10,, A,3,4,,3,, B,1,,4,5,, B,2,,3,4,, If we see the above data on Data5 column do not have any row got filled. So remove only that column(Here Data5) and... (4 Replies)
Discussion started by: ks_reddy
4 Replies

7. Shell Programming and Scripting

Rows to Columns

Hi Guru's, I have a requirement where i need to convert rows to column based on a key column. Input: Account_id|Trip_Org|Trip_Dest|City|Hotel_Nm 123|DFW|CHI|Dallas|Hyatt 123|LAS|LPA|Vegas|Hyatt Palace Output:... (6 Replies)
Discussion started by: rakesh5300
6 Replies

8. Windows & DOS: Issues & Discussions

Columns to Rows

I want to create a script with gawk. I have the following file with 2 columns: A 1 A 2 A 3 B 1 B 2 B 3 C 1 C 2 D 1 D 2 D 3 D 4 and i want to convert to: (1 Reply)
Discussion started by: sameeribraimo
1 Replies

9. Shell Programming and Scripting

Rows into columns?

I have a file thats space delimited that looks something like this: Joe Smith jsmith 43234 bill1;bill2;read;read2;schedule Andy Summers asummers 11232 bill1;read Beth McConnel bmconnel 43443 read;read2;schedule;bill Susan Fowler sfowler 09332 bill1;read;schedule I need to... (8 Replies)
Discussion started by: regexnub
8 Replies

10. Shell Programming and Scripting

Columns to rows

I have a file which has values seperated by ~ as shown below and I have to achieve a column to row from this. Incoming row is like this How do i get the occueance of ~ and then split it into rows as and below is what I have to achieve. Thanks (16 Replies)
Discussion started by: mgirinath
16 Replies
Login or Register to Ask a Question