awk - rearange data


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting awk - rearange data
# 8  
Old 02-17-2010
An attempt to handle a variable number of unknown keys:

Code:
perl -lne'
push @{ $_{$1} }, $2 while /(\S+)\s+(\S+)/g;

END {
    $max = ( sort { $#$b <=> $#$a } values %_ )[0];
    @keys = sort { lc $a cmp lc $b } keys %_;
    $mask = join "\t", map "%" . ( length $_ ) . "s", @keys;
    printf $mask. "\n", @keys;
    for ( $i = 0 ; $i <= @$max ; $i++ ) {
        printf $mask. "\n", map $_{$_}->[$i], @keys;
    }

}' infile


Last edited by radoulov; 02-17-2010 at 02:32 PM.. Reason: Refactored.
# 9  
Old 02-17-2010
Just a try to use a more simpler Perl code to achieve the target.

Code:
perl -wnale '
BEGIN{
$,="," ;
@a=(edge100,BroadLeaves,Conifers,clc2006,slope,aspect,dem30sec) ;
print sort(@a)
}
%h=@F ;
for ( sort keys %h) { printf "$h{$_}," ; }
print "" ;
' infile.txt



---------- Post updated at 20:47 ---------- Previous update was at 19:56 ----------

another better improvement can be added to the code as below:-

Code:
perl -wnale '
%B=@F , $,=","  , print sort {"\L$a" cmp "\L$b"} keys %B if $.==1 ;
%h=@F ; for ( sort { "\L$a" cmp "\L$b" } keys %h) { printf "$h{$_}," ; }  print "" ;
' infile.txt

SmilieSmilieSmilie

Last edited by ahmad.diab; 02-17-2010 at 04:00 PM..
# 10  
Old 02-17-2010
Yes,
or:

Code:
perl -lane'
%_=@F;@f=sort{lc$a cmp lc$b}keys%_;print join"\t",@f if$.==1;print join"\t",map$_{$_},@f;
 ' infile


Last edited by radoulov; 02-17-2010 at 04:19 PM.. Reason: Modified ...
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

awk --> math-operation in data-record and joining with second file data

Hi! I have a pretty complex job - at least for me! i have two csv-files with meassurement-data: fileA ...... (2 Replies)
Discussion started by: IMPe
2 Replies

2. Shell Programming and Scripting

Help with parsing data with awk , eliminating unwanted data

Experts , Below is the data: --- Physical volumes --- PV Name /dev/dsk/c1t2d0 VG Name /dev/vg00 PV Status available Allocatable yes VGDA 2 Cur LV 8 PE Size (Mbytes) 8 Total PE 4350 Free PE 2036 Allocated PE 2314 Stale PE 0 IO Timeout (Seconds) default --- Physical volumes ---... (5 Replies)
Discussion started by: rveri
5 Replies

3. Shell Programming and Scripting

Help to get correct data using awk

I have this input.|user1 |10.10.10.10 |23|046|1726 (212) |0 |user2 |10.10.10.11 |23|046|43 (17) |0 |test |10.10.10.12 |23|046|45 (10) |0 |test1 |10.10.10.13 |23|046|89 (32) |0 I need to get the data for a user like thisuser1 1726 user2 43 test 45 test1 89... (11 Replies)
Discussion started by: Jotne
11 Replies

4. Shell Programming and Scripting

extract data with awk

i have a following output file PF Release 2.4 on SERVICE at Mon Feb 6 18:41:02 2012 ---------------------------------------- ---------------- |pPF |SEP |CAPS |CALLS |OPEN | |-------------------------------------------------------------| | 0 ---... (1 Reply)
Discussion started by: gauravah
1 Replies

5. Shell Programming and Scripting

Rearange fields within a csv

Hello with sed and tr I have converted my "quite big" cronlist into the below csv file Here is a sample: 05,15,15,25,35,45,55;*;*;*;*;/SCRIPT1;/SCRIPT1.log 10;6,16;*;*;*;/SCRIPT2;/SCRIPT2.log 30;*;*;*;*;/SCRIPT3;/SCRIPT3.cfg;/SCRIPT3.log 50;8;*;*;*;/SCRIPT4;-1;/SCRIPT4.log ... (6 Replies)
Discussion started by: drbiloukos
6 Replies

6. Shell Programming and Scripting

AWK help. how to compare a variable with a data array in AWK?

Hi all, i have a data array as follows. array=ertfgj2345 array=456ttygkd . . . array=errdjt3235 so number or elements in the array can varies depending on how big the data input is. now i have a variable, and it is $1 (there are $2, $3 and so on, i am only interested in $1). ... (9 Replies)
Discussion started by: usustarr
9 Replies

7. Shell Programming and Scripting

Awk: Data Insert

Hi guys, I'm having some difficulties in insert some details to the following contents. I need to insert "TEST" under MIR & a value "25" to the next line. So far, I am able to insert "TEST" by using awk to capture MIR as the identifier. However, I am having some difficulties in inserting "25"... (3 Replies)
Discussion started by: nantheless
3 Replies

8. Shell Programming and Scripting

Reformatting Data in AWK

Dear AWK Users, I have a data set that is so large (Gigabytes) that it cannot be opened in the vi editor in its entirety. But I can manipulate the entire thing in AWK. It is formatted in a regular manner such that it has the variable descriptions or listings preceeding the variables. The latter... (13 Replies)
Discussion started by: sda_rr
13 Replies

9. Shell Programming and Scripting

help reformat data with awk

I am trying to write an awk program to reformat a data table and convert the date to julian time. I have all the individual steps working, but I am having some issues joing them into one program. Can anyone help me out? Here is my code so far: # This is an awk program to convert the dates from... (4 Replies)
Discussion started by: climbak
4 Replies

10. UNIX for Dummies Questions & Answers

Extrat data using AWK

How can I extract data using AWK I have data as follow 01--------- 02----- 03----- 03--- I want to extract data to the file 01.dat,02.dat and 03.dat the field value should be the part of file name OutFile="xx" awk -F"|" '{OutFile = $1; print OutFile}' x1 > $OutFile echo $OutFile this... (1 Reply)
Discussion started by: kadamr
1 Replies
Login or Register to Ask a Question