Rows to columns transposing and reformating.


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Rows to columns transposing and reformating.
# 22  
Old 12-07-2009
Quote:
Originally Posted by Scrutinizer
Plain awk against raw input
Code:
awk '{sub(/[^A-Z]*/,"")}
     /^VIRTUAL/{j=k=l=i;V[i++]=$2}
     /^SERVICE/{S[j++]=$2} j>i{i++}
     /^POOL/   {P[k++]=$2} k>i{i++}
     /^MEMBER/ {M[l++]=$2} l>i{i++}
     END       {print "VIRTUAL         SERVICE  POOL                  MEMBER" ;
                for (j=0;j<i;j++) printf "%-15s %-8s %-21s %s\n",V[j],S[j],P[j],M[j]}' 'RAW Input.txt'

Useful code. Thanks.
# 23  
Old 12-07-2009
Code:
my $id="";
print "COL_1 COL_2 COL_3 COL_4\n";
while(<DATA>){
	chomp;
	my @tmp = split(" ",$_,2);
	if($tmp[0] ne $id){
		print $tmp[1]," ";
		$id=$tmp[0];
	}
	if(/^\s*$/){
		print "\n";
		$id="";
	}
}
__DATA__
COL_1 <IP Add 1> 
COL_2 <Service1> 
COL_3 <ABCDEFG>
COL_4 <IP ADD:PORT> 
COL_4 <IP ADD:PORT>
 
COL_1 <IP Add 2> 
COL_2 <Service2>
COL_2 <Service3>
COL_2 <Service4>
COL_3 <AAAABBB>
COL_4 <IP ADD:PORT> 
COL_4 <IP ADD:PORT> 
COL_4 <IP ADD:PORT> 
COL_4 <IP ADD:PORT>

# 24  
Old 12-17-2009
@summer,
How do i use the input file/data in the while loop. Is it something like while(`cat input.txt`) or how ?

@Scrutinizer & others.
I did use the earlier code by Scrutinizer to convert my input files and it saved huge amount of time . Now I have a different version of the same file with extra column . I did try to modify the code but could not accomplish the expected results.
Hope you guys can help me out in achieving the same.

Thanks.

Last edited by bluethunder; 12-18-2009 at 03:30 AM.. Reason: removed attachments
# 25  
Old 12-18-2009
Something like this? A couple of adjustments were needed...
Code:
awk 'BEGIN{fmt="%-15s %-32s %-8s %-33s %s\n"}
     {sub(/[^A-Z]*/,"")}
     /^VIRTUAL/     {j=k=l=i;V[i++]=$2}
     /^SERVER/      {S[j++]=$2;T[(j-1)]=$4} j>i{i++}
     /^POOL [^M]/   {P[k++]=$2} k>i{i++}
     /^POOL MEMBER/ {M[l++]=$3} l>i{i++}
     END            {printf fmt, "VIRTUAL","SERVER","SERVICE","POOL","POOL MEMBER" ;
                    for (j=0;j<i;j++) printf fmt,V[j],S[j],T[j],P[j],M[j]}'  'actual input.txt'


Last edited by Scrutinizer; 12-18-2009 at 08:52 AM..
# 26  
Old 12-18-2009
[QUOTE=Scrutinizer;302381359]Something like this? A couple of adjustments were needed...
Code:
awk 'BEGIN{fmt="%-15s %-32s %-8s %-33s %s\n"}
     {sub(/[^A-Z]*/,"")}
     /^VIRTUAL/     {j=k=l=i;V[i++]=$2}
     /^SERVER/      {S[j++]=$2;T[(j-1)]=$4} j>i{i++}
     /^POOL [^M]/   {P[k++]=$2} k>i{i++}
     /^POOL MEMBER/ {M[l++]=$3} l>i{i++}
     END            {printf fmt, "VIRTUAL","SERVER","SERVICE","POOL","POOL MEMBER" ;
                    for (j=0;j<i;j++) printf fmt,V[j],S[j],T[j],P[j],M[j]}'  'actual input.txt'

[QUOTE]

Thanks S...

You are the MAN...Smilie
# 27  
Old 12-18-2009
Slightly optimized version:
Code:
awk 'BEGIN{fmt="%-15s %-32s %-8s %-33s %s\n";i=0}
     {sub(/[^A-Z]*/,"")}
     /^VIRTUAL/     {j=k=l=i;V[i++]=$2}
     /^SERVER/      {S[j]=$2;T[j++]=$4} j>i{i++}
     /^POOL [^M]/   {P[k++]=$2} k>i{i++}
     /^POOL MEMBER/ {M[l++]=$3} l>i{i++}
     END            {printf fmt, "VIRTUAL","SERVER","SERVICE","POOL","POOL MEMBER" ;
                    for (j=0;j<i;j++) printf fmt,V[j],S[j],T[j],P[j],M[j]}' 'actual input.txt'

# 28  
Old 12-18-2009
Quote:
Originally Posted by Scrutinizer
Slightly optimized version:
Code:
awk 'BEGIN{fmt="%-15s %-32s %-8s %-33s %s\n";i=0}
     {sub(/[^A-Z]*/,"")}
     /^VIRTUAL/     {j=k=l=i;V[i++]=$2}
     /^SERVER/      {S[j]=$2;T[j++]=$4} j>i{i++}
     /^POOL [^M]/   {P[k++]=$2} k>i{i++}
     /^POOL MEMBER/ {M[l++]=$3} l>i{i++}
     END            {printf fmt, "VIRTUAL","SERVER","SERVICE","POOL","POOL MEMBER" ;
                    for (j=0;j<i;j++) printf fmt,V[j],S[j],T[j],P[j],M[j]}' 'actual input.txt'

This is even better.Smilie
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Transposing rows to columns with multiple similar lines

Hi, I am trying to transpose rows to columns for thousands of records. The problem is there are records that have the same lines that need to be separated. the input file as below:- ID 1A02_HUMAN AC P01892; O19619; P06338; P10313; P30444; P30445; P30446; P30514; AC Q29680; Q29837;... (2 Replies)
Discussion started by: redse171
2 Replies

2. Shell Programming and Scripting

transposing lines to columns

Okay folks, here's a question. I tried searching but couldn't find exactly what I needed. I have a text file (excerpt below). This text file is an extract I did from several hundred pages of datasheets using grep so I could look only at the site history for each site. The problem is that... (2 Replies)
Discussion started by: jbrandt1979
2 Replies

3. Shell Programming and Scripting

Transposing rows and columns (pivoting) using shell scripting

Here is the contents of an input file. A,1,2,3,4 10,aaa,bbb,ccc,ddd 11,eee,fff,ggg,hhh 12,iii,jjj,lll,mmm 13,nnn,ooo,ppp I wanted the output to be A 10 1 aaa 10 2 bbb 10 3 ccc 10 4 ddd 11 1 eee 11 2 fff 11 3 ggg 11 4 hhh ..... and so on How to do it in ksh... (9 Replies)
Discussion started by: ksatish89
9 Replies

4. Shell Programming and Scripting

transposing columns into rows

Hi, I need to transpose columns of my files into rows and save it as individual files. sample contents of the file below. 0.9120 0.7782 0.6959 0.6904 0.6322 0.8068 0.9082 0.9290 0.7272 0.9870 0.7648 0.8053 0.8300 0.9520 0.8614 0.6734 0.7910 0.6413 0.7126 0.7364 0.8491 0.8868 0.7586 0.8949... (8 Replies)
Discussion started by: ida1215
8 Replies

5. Shell Programming and Scripting

Help for a Perl newcomer! Transposing data from columns to rows

I have to create a Perl script which will transpose the data output from my experiment, from columns to rows, in order for me to analyse the data. I am a complete Perl novice so any help would be greatly appreciated. The data as it stands looks like this: Subject Condition Fp1 ... (12 Replies)
Discussion started by: Sarah_W
12 Replies

6. Shell Programming and Scripting

Transposing Repeated Rows to Columns.

I have 1000s of these rows that I would like to transpose to columns. However I would like the transpose every 3 consecutive rows to columns like below, sorted by column 3 and provide a total for each occurrences. Finally I would like a grand total of column 3. 21|FE|41|0B 50\65\78 15... (2 Replies)
Discussion started by: ravzter
2 Replies

7. Shell Programming and Scripting

awk, string as record separator, transposing rows into columns

I'm working on a different stage of a project that someone helped me address elsewhere in these threads. The .docs I'm cycling through look roughly like this: 1 of 26 DOCUMENTS Copyright 2010 The Age Company Limited All Rights Reserved The Age (Melbourne, Australia) November 27, 2010... (9 Replies)
Discussion started by: spindoctor
9 Replies

8. Shell Programming and Scripting

Transposing rows into columns

I have a file like the one given below P1|V1|V2 P1|V1|V3 P1V1|V2 P2|V1|V4 P2|V2|V6 P2|V1|V4 I want it convert to P1|V1|V2|V2|V3 P2|V1|V4|V2|V6 2nd and 3rd column should be considered as together and so the tird row is duplicate Any ideas? (3 Replies)
Discussion started by: prasperl
3 Replies

9. Shell Programming and Scripting

Transposing columns with awk

I want a sweet simple time efficient awk script in online which gets output 001_r 0.0265185 0.0437049 0.0240642 0.0310264 0.0200482 0.0146746 0.0351344 0.0347856 0.036119 1.49 firstcoloumnvalue allvaluesof 'c' in one row 001_r : 002_r c: 0.0265185 N: 548 001_r : 007_r c:... (5 Replies)
Discussion started by: phoenix_nebula
5 Replies

10. Shell Programming and Scripting

awk - reformating rows into columns

looking to do the following... What the data looks like server1 02/01/2008 groups 10 server1 03/01/2008 groups 15 server1 04/01/2008 groups 20 server2 02/01/2008 users 50 server2 03/01/2008 users 75 server2 04/01/2008 users 100 server2 04/01/2008 users 125 What I would like the... (1 Reply)
Discussion started by: jmd2004
1 Replies
Login or Register to Ask a Question