How to sort by complex algorithm


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting How to sort by complex algorithm
# 1  
Old 07-17-2012
How to sort by complex algorithm

Hello,

To simplify ma question, here is my list :
Code:
# cat liste
  a
  m
  x
  h

and here is the right order to list his component :
Code:
liste_order="1:m 2:a 3:h 4:x"

The only way to sort my file like I want, I find this idea :
Code:
cat liste |  sed 's/a/2:a/g' | sed 's/m/1:m/g' | sed 's/h/3:h/g' | sed 's/x/4:x/g'   | sort

But, it's very complex.


Have anyone any better idea ?
( I simplify my problem, my file is big...)

Thanks in advance.

Moderator's Comments:
Mod Comment Please use code tags next time for your code and data.

Last edited by radoulov; 07-17-2012 at 11:14 AM..
# 2  
Old 07-17-2012
Quote:
Originally Posted by mlaiti
Hello,

To simplify ma question, here is my list :
# cat liste
a
m
x
h
and here is the right order to list his component :
liste_order="1:m 2:a 3:h 4:x"
And what decides the right order???
# 3  
Old 07-17-2012
With Perl:

Code:
perl  -lne'BEGIN {
  %liste_order = reverse @{ [split /[\s+:]/, "1:m 2:a 3:h 4:x"] };
  }
  push @data, $_ =~ /(\w+)/;
  print join $/, sort { 
     $liste_order{$a} <=> $liste_order{$b} 
       } @data 
    if eof
    ' liste

# 4  
Old 07-17-2012
Thank you for your answer, but I cannot use PERL...
Is there any idea by SHELL ?


Many thanks in advance.
# 5  
Old 07-17-2012
The shell is not the right tool for this task, why not Perl?
# 6  
Old 07-17-2012
Because, i don't understand it, so i cannot adapt it to my real case.
i just simplify it
real case is a bit different, and i don't know how to adapt your perl script:

1) in your script how to replace "1:m 2:a 3:h 4:x" by a variable ( a shell variable" liste_order which I prepare in advance.

2) Unstead of a file "liste" my input came from another script execution.
Let's say "command.sh"
How, can I use your perl with the ouput of "command.sh" unstead a file "liste"
( i cannot put a outout of command.sh on a liste file for many reason)

With shell i can adapt any solution to my cadr, with perl i cannot ....
Thanhs in advance.
# 7  
Old 07-17-2012
You could try something like this:

Code:
export liste_order='1:m 2:a 3:h 4:x'
./command.sh | 
  perl  -lne'BEGIN {
    %liste_order = reverse @{ [split /[\s+:]/, $ENV{liste_order}] };
    }
    push @data, $_ =~ /(\w+)/;
    print join $/, sort { 
      $liste_order{$a} <=> $liste_order{$b} 
        } @data 
     if eof
    '

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Masking algorithm

I have a requirement of masking few specific fields in the UNIX file. The details are as following- File is fixed length file with each record of 250 charater length. 2 fields needs to be masked – the positions are 21:30 and 110:120 The character by character making needs to be done which... (5 Replies)
Discussion started by: n78298
5 Replies

2. Programming

Please help me to develop algorithm

Hi guys , in my study book from which I re-learn C is task to generate all possible characters combination from numbers entered by the user. I know this algorithm must use combinatorics to calculate all permutations. Problem is how to implement algortihm. // This program reads the four numbers... (0 Replies)
Discussion started by: solaris_user
0 Replies

3. UNIX for Dummies Questions & Answers

Sort directory with complex numeric file names

I have a directory with a large number (1000s) of files and I need to produce a file listing all the files in the directory ordered "properly" (properly will be explained shortly). The files have the following naming pattern: bul_13_5_228_b.txt bul_1_3_57.txt bul_13_6_229.txt... (2 Replies)
Discussion started by: fdsayre
2 Replies

4. Shell Programming and Scripting

Sort complex data

Hi, Can someone here help sorting the following data in numeric order? INPUT: FIRST abc(3) def(13) fgh(1) ijk(6) abc(2) SECOND dfe(10) abc(4) hij(19) tlm(1) hij(1) hub(10) abc(1) fed(3) OTHERS hij(10) mok(4) bub(19) hij(1) abc(2) abc(15) abc(1) hij(3) OUTPUT: FIRST def(13) ijk(6)... (12 Replies)
Discussion started by: need_help
12 Replies

5. Shell Programming and Scripting

Figure out complex sort

This is an extension to a question that was earlier posted on this forum: I have task in which I need to pickup a set of files from a directory depending on the following criteria: Every month 6 files are expected to arrive at /test. The files come with date timestamp and the latest file set... (7 Replies)
Discussion started by: w020637
7 Replies

6. UNIX for Advanced & Expert Users

Algorithm In Pseudocode

A) produce an algorithm in pseudocode and a flowchart that gets n from the user and calculate their sum. B) Write an algorithm in pseudocode and a flowchart that gets number x from he user and calculates x5 ( X to the power of %5). Calculate by using multiplication. ... (1 Reply)
Discussion started by: delsega
1 Replies

7. Shell Programming and Scripting

algorithm

PID USERNAME SIZE RSS STATE PRI NICE TIME CPU PROCESS/NLWP 21444 tomusr 213M 61M sleep 29 10 1:20:46 0.1% java/43 21249 root 93M 44M sleep 29 10 1:07:19 0.2% java/56 is there anyway i can use a command to get the total of the SIZE? 306M (Derive from... (5 Replies)
Discussion started by: filthymonk
5 Replies

8. Programming

FTP's algorithm

what algorithm a FTP application uses i mean whn implemented in socket programming..if you could give a little decription (1 Reply)
Discussion started by: toughguy2handle
1 Replies

9. Programming

Algorithm problem

Looking for an algorithm to compute the number of days between two given dates I came across a professor's C program located here: http://cr.yp.to/2001-275/struct1.c I was wondering if anyone could tell me where the value 678882 in the line int d = dateday - 678882; comes from and also the... (1 Reply)
Discussion started by: williamf
1 Replies

10. Programming

Feedback algorithm

Hi I search an exemple of scheduling Feedback algorithm, or help about how to create one. Thanks (0 Replies)
Discussion started by: messier79
0 Replies
Login or Register to Ask a Question