Convert row to column


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Convert row to column
# 1  
Old 10-20-2011
Convert row to column

Hi,
I have a file like this
Code:
50      1       2       1374438
50      1       2       1682957
50      5       2       1453574
50      10     2       1985890
100      1       2       737307
100      5       2       1660204
100      10       2       2148483

and I want to convert this by gathering all 4th Col values to column vise with combination of Col1andCol2
Code:
50/1        50/5                    50/10                100/1       100/5               100/10 
1374438  1453574   1985890 737307  1660204            2148483
1682957

The columns are separated by tab (Not in examples). I have 63 combinations of Col1/Col2 (50/1, 50/5 .... ) so hard coding is not a solution. Col3 is not in use so can ignore

Thanks in advance

Moderator's Comments:
Mod Comment Please use code tags, thanks. code and quote tags are different. quote tags are for quoting what other people wrote, code tags is for code, data or logs etc.

Last edited by zaxxon; 10-20-2011 at 09:17 AM..
# 2  
Old 10-20-2011
The following script (called like ~/$ perl test.pl tmp.dat) returns the result you require.
Code:
#!/usr/bin/perl

use strict;
use warnings;

my %table;
while(<>){
   my ($index_1,$index_2,$waste,$value)=split(/\s+/,$_);
   push @{$table{"$index_1/$index_2"}},$value;
}
my $rows=0;
$rows = $rows> $#{$table{$_}} ? $rows : $#{$table{$_}} for (keys %table);
print join( "",map {sprintf "%-11s", $_;} sort numeric_sort_col_header keys %table),"\n";
for my $index (0..$rows){
   for my $key (sort numeric_sort_col_header keys %table){
      printf "%-11s",($table{$key}->[$index]||"");
   }
   print "\n";
}
sub numeric_sort_col_header{
   my @A=split(/\//,$a);
   my @B=split(/\//,$b);
   $A[0]<=>$B[0]||$A[1]<=>$B[1]
}


Last edited by Skrynesaver; 10-20-2011 at 12:59 PM.. Reason: Make column headings line up
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Convert Data from Column to Row

Hi FileA.txt E_TIM 16, ETE 15, EOND 26, EEC 81, E_1 un, E_2 un, E_3 un, E_4 284, E_TIM 17, ETE 15, EOND 29, EEC 82, E_1 un, E_2 un, E_3 un, E_4 249, (6 Replies)
Discussion started by: asavaliya
6 Replies

2. Shell Programming and Scripting

[Solved] Convert Row To column

Hi Folks, I am using db2 command -> db2 list tablespace show detail Tablespace ID = 10 Name = TSCDDHLMSUM Type = Database managed space Contents = All permanent data.... (5 Replies)
Discussion started by: ckwan
5 Replies

3. Shell Programming and Scripting

How to convert the row to column in Perl?

Dear Perl users, Could you help me how to convert from row to column if I've a case below: Linux 2014_01_24 CPU 10 Linux 2014_01_24 MEM 20 UNIX 2014_01_24 CPU 30 UNIX 2014_01_24 MEM ... (6 Replies)
Discussion started by: askari
6 Replies

4. Shell Programming and Scripting

Script: Convert row in to column

Hi, i need to convert SG_ERP1 SG_ERP2 SG_ERP3 in to: SG_ERP1 SG_ERP2 SG_ERP3 It's possibile? (16 Replies)
Discussion started by: elilmal
16 Replies

5. Shell Programming and Scripting

convert row to column with respect of first column.

Input file A.txt :- C2062 -117.6 -118.5 -117.5 C5145 0 0 0 C5696 0 0 0 Output file B.txt C2062 X -117.6 C2062 Y -118.5 C2062 Z -117.5... (4 Replies)
Discussion started by: asavaliya
4 Replies

6. UNIX for Dummies Questions & Answers

awk: convert column to row in a specific way

Hi all! I have this kind of output: a1|b1|c1|d1|e1 a2|b2|c2 a3|b3|c3|d3 I would like to transpose columns d and e (when they exist) in column c, and under the row where they come from. Then copying the beginning of the row. In order to obtain: a1|b1|c1 a1|b1|d1 a1|b1|e1 a2|b2|c2... (1 Reply)
Discussion started by: lucasvs
1 Replies

7. Shell Programming and Scripting

convert a column to row output?

Getting tired of cut-and-paste...so I thought I would post a question. how do I change this column output to a single row? from this: # vgdisplay -v /dev/vgeva05 | grep dsk | awk '{print $3}' /dev/dsk/c6t0d5 /dev/dsk/c11t0d5 /dev/dsk/c15t0d5 /dev/dsk/c18t0d5 /dev/dsk/c7t0d5... (8 Replies)
Discussion started by: mr_manny
8 Replies

8. Shell Programming and Scripting

Convert column values into row

hi, I have a requirement where in I read the values from a file using awk. The resulting data should be converted into row format from column format. For ex: My log file login.lst contains the following SERVER1 DB1 SERVER2 DB2 SERVER3 DB3 SERVER4 DB4 I use awk to grep only the server... (6 Replies)
Discussion started by: senthil3d
6 Replies

9. Shell Programming and Scripting

column to row convert - script - help

Hi, I have a file named col.txt 1.000 2.000 3.000 4.000 5.000 6.000 7.000 8.000 I should get this 1.000 5.000 2.000 6.000 3.000 7.000 (10 Replies)
Discussion started by: G0Y
10 Replies

10. UNIX for Dummies Questions & Answers

convert column into row with some modifier

A file content have 1 1:-0.289433 2:0.833778 3:0.314471 4:-0.289433 5:-0.81876 6:-0.456693 7:-0.17511 8:-0.644555 9:-0.00666341 10:-1.13603 I will like to have that column into row with numbers to be printed (red color) only after colon output shud be like that -0.289433... (1 Reply)
Discussion started by: cdfd123
1 Replies
Login or Register to Ask a Question