Vertical sorting of columns


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers Vertical sorting of columns
# 1  
Old 08-06-2009
Vertical sorting of columns

Please help to sort columns in this file:

a b d f c e
1 4 10 16 7 13
2 5 11 17 8 14
3 6 12 18 9 15

I need to sort COLUMNS (so sort command doesn't work) like this:

a b c d e f
1 4 7 10 13 16
2 5 8 11 14 17
3 6 9 12 15 18

I know sed can do it but don't know how... Smilie
# 2  
Old 08-06-2009
pretty sure sed isn't well suited to this... I'd write a shell script, but I'm sure there must be a simpler one-liner with awk.
# 3  
Old 08-06-2009
This is certainly not a one-liner, but...

Code:
awk ' {
  for( I = 1; I <= NF; I++ )
    system( "cut -d \" \" -f " I " " FILENAME " > " $I "_tmp" )
  exit
}
' file1
paste *_tmp
rm *_tmp
 
 
Output:
a       b       c       d       e       f
1       4       7       10      13      16
2       5       8       11      14      17
3       6       9       12      15      18

# 4  
Old 08-06-2009
Quote:
Originally Posted by scottn
Code:
awk ' {
  for( I = 1; I <= NF; I++ )
    system( "cut -d \" \" -f " I " " FILENAME " > " $I "_tmp" )
  exit
}
' file1
paste *_tmp
rm *_tmp
 
 
Output:
a       b       c       d       e       f
1       4       7       10      13      16
2       5       8       11      14      17
3       6       9       12      15      18

doesn't work Smilie((
# 5  
Old 08-06-2009
The statement "doesn't work" isn't exactly helpful - expecially to someone who is trying to help you.

I took your input, and the output is as you requested.

Explain why it doesn't work.
# 6  
Old 08-06-2009
When I write this script as a file and run it ( $awk sort.awk file1 > file2) it writes: awk: syntax error at source line 1 source file sort_col.awk
context is
awk >>> ' <<<
awk: bailing out at source line 8

If I run it from the command line without writing the script into a file it quits after the line ' file1 and doesn't do
paste *_tmp
rm *_tmp
and all tmp files are the same...
Maybe I need to run it different way?

---------- Post updated at 05:39 PM ---------- Previous update was at 05:22 PM ----------

Quote:
Originally Posted by scottn
The statement "doesn't work" isn't exactly helpful - expecially to someone who is trying to help you.

I took your input, and the output is as you requested.

Explain why it doesn't work.
or maybe it's different on mac?
# 7  
Old 08-06-2009
I have no idea about the Mac. You didn't mention that you were using a Mac, and it's not something I would think to ask!

This is a shell script not an awk script.

file1 is intended to mean the file you want sorted. Replace file1 with the name of the file with the data you want sorted.

Or, put the code into a file called sort.sh
Code:
awk ' {
  for( I = 1; I <= NF; I++ )
    system( "cut -d \" \" -f " I " " FILENAME " > " $I "_tmp" )
  exit
}
' $1
paste *_tmp
rm *_tmp

(note I changed file1 to $1)

Run it as sort.sh filename

(where filename is the name of the file to sort)

But as I didn't know what OS you were running, this might not work. It would have been helpful to know that from the beginning. (when you post to UNIX forums, we make some assumptions about your OS, and as awk, paste, cut, etc. are quite generic, we assume you have them).
 
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Sorting by columns

Hi, I have a tab delimited columnar file where I want to remove lines wherever two particular columns match. so for this file, I want to toss the lines where columns 1 and 2 match: a a 1 3 a b 2 4 b b 3 5 because there are matches column 1 and 2 in lines 1 and 3, I would like a script to... (2 Replies)
Discussion started by: mikey11415
2 Replies

2. UNIX for Dummies Questions & Answers

Sorting rows to columns

Dear all, I need your help to sort out a file with more then 15, 000 rows, input file has following format : AT4560 GO:1289GO:8915GO:9243GO:5739GO:6757GO:9245GO:9507output should be like: AT4560 GO:1289 AT4560 GO:8915 AT4560 GO:9243 AT4560 GO:5739 AT4560 GO:6757 AT4560 GO:9245... (5 Replies)
Discussion started by: AAWT
5 Replies

3. Shell Programming and Scripting

CSV Sorting on only particular columns

Hello! So ive been presented with this comma-delimited file: I need a print to look as below " lastname, phone_number, zip for every person with a last name starting with the letter H, I only with a 650-area code phone number. output should be sorted by reverse ZIP code " I only have... (5 Replies)
Discussion started by: strangemachine
5 Replies

4. Shell Programming and Scripting

Help in sorting multiple columns

Hello all, I am using printf to print the sorted o/p in my script.I am trying to sort in following way but doesn't work. printf "%13s %2s UDP %15s:%s Program %4s HD: %23s HD: %23s %10s %s %s %3s days %3s hours\n" $encoder $i "${ipaddr}" ${portno} ${progno} ${inres} ${outres} ${inrate}... (4 Replies)
Discussion started by: ramman
4 Replies

5. UNIX for Dummies Questions & Answers

Sorting by Multiple Columns

Hi I have a text file that has four columns (Logonid,First Name,Last Name,Status) Logonid First Name Last Name Status abc2 Fred Mercury Inactive abc1 John Deacon Active abc3 Roger Taylor Active abc4 Brian ... (2 Replies)
Discussion started by: theref
2 Replies

6. Shell Programming and Scripting

sorting and adding columns

i have a file with two columns, and i want to uniquely sort the values in fist column and add the corresponding values in the second columns eg file a contents tom 200 john 300 sow 500 tom 800 james 50 sow 300 output shpould be in file b as tom 1000 john 300 sow 800 james 50 (0 Replies)
Discussion started by: dealerso
0 Replies

7. UNIX for Dummies Questions & Answers

Sorting by multiple columns

I have a space delimited text file that I would like to sort by multiple columns. First I want to sort by column 1, then by column 2. Both columns are numerical. Thanks! (1 Reply)
Discussion started by: evelibertine
1 Replies

8. Shell Programming and Scripting

Sorting multiple columns

Hi, We have a requirement of need to sort a file based on fields 1,3 and 4. I tried with sort command however it is not giving expected output, can we achieve any other way? Please let me know ASAP. File a e w a a b a a a a d g a a h h c d a e a a a w Output a b a a a a a w a a d... (4 Replies)
Discussion started by: Nagapandi
4 Replies

9. UNIX for Advanced & Expert Users

sorting of varchar columns

Hi , I need to sort a file based on multiple columns All the columns are of varchar type can any one give me the command to sort for varchar columns? Thanks (3 Replies)
Discussion started by: laxmi131
3 Replies

10. Shell Programming and Scripting

Sorting based on columns

Hi, I want a list of entries in 3 space delimited columns. I want to sort entries based on the very first column. Rows can't be changed. For example: If I have... Abc Abc Acc Bca Bda Bdd Cab Cab Cbc Dbc Dca Dda Abc Abc Acc the output should be... Abc Abc Acc Abc Abc Acc Bca... (7 Replies)
Discussion started by: MobileUser
7 Replies
Login or Register to Ask a Question