Sorting a list


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers Sorting a list
# 8  
Old 01-05-2012
More reliable than the one of my previous post
The idea is to isolate every numeric string with one space before and one space after so that we can then perform numeric sorting on the wanted keys(here : 14 & 20)
Code:
sed 's/\([0-9][0-9]*\)/ & /g' yourfile | sort -k 14n -k 20n | sed 's/ //g'

# 9  
Old 01-05-2012
Quote:
Originally Posted by ctsgnb
More reliable than the one of my previous post
Code:
sed 's/\([0-9][0-9]*\)/ & /g' yourfile | sort -k 14n -k 20n | sed 's/ //g'

Is the above a simplification on your previous command?

---------- Post updated at 01:50 PM ---------- Previous update was at 01:47 PM ----------

If I have a file name such as the one below, how can I get the number associated with the dc tag to get 0.006, or any tag type I want for that matter.

Code:
n02-z30-dsr65-terr0.50-dc0.006-16x12drw-run6.cmd

# 10  
Old 01-05-2012
If you add for example a line like :

Code:
n02-z30-dsr65-terr0.50-dc0.004-16x12drw-run10.cmd

in the middle of your example file...

You will see that my second command sort it correctly whereas my first proposal doesn't handle it correclty since it was only performing a numeric sorting on the '00n' field and not on the 'X' of the run'X' field which was therefore sorted as litteral instead of numeric so that "10" arrive before 6 (start with 1 and 1<6) but with the second solution, the numeric sorting also apply to the X of runX so 10 is not considered as the string 1+0 but as the number 10 so that 10>6 so the 6 will be displayed before the 10.

Last edited by ctsgnb; 01-05-2012 at 02:59 PM.. Reason: oops... forgot to remove the spaces
# 11  
Old 01-05-2012
Quote:
Originally Posted by ctsgnb
More reliable than the one of my previous post
The idea is to isolate every numeric string with one space before and one space after so that we can then perform numeric sorting on the wanted keys(here : 14 & 20)
Code:
sed 's/\([0-9][0-9]*\)/ & /g' yourfile | sort -k 14n -k 20n | sed 's/ //g'

Interesting idea using
Code:
sed 's/\([0-9][0-9]*\)/ & /g'

The only thing is that it introduces the problem that
Code:
n 02 -z 30 -dsr 65 -terr 0 . 50 -dc 0 . 010 - 16 x 12 drw-run 1 .cmd
n 02 -z 30 -dsr 65 -terr 0 . 50 -dc 0 . 008 - 16 x 12 drw-run 1 .cmd
n 02 -z 30 -dsr 65 -terr 0 . 50 -dc 0 . 006 - 16 x 12 drw-run 1 .cmd
n 02 -z 30 -dsr 65 -terr 0 . 50 -dc 0 . 004 - 16 x 12 drw-run 1 .cmd
n 02 -z 30 -dsr 65 -terr 0 . 50 -dc 3 . 002 - 16 x 12 drw-run 1 .cmd
n 02 -z 30 -dsr 65 -terr 0 . 50 -dc 0 . 006 - 16 x 12 drw-run 2 .cmd
n 02 -z 30 -dsr 65 -terr 0 . 50 -dc 0 . 008 - 16 x 12 drw-run 2 .cmd
n 02 -z 30 -dsr 65 -terr 0 . 50 -dc 1 . 010 - 16 x 12 drw-run 2 .cmd
n 02 -z 30 -dsr 65 -terr 0 . 50 -dc 2 . 004 - 16 x 12 drw-run 2 .cmd
n 02 -z 30 -dsr 65 -terr 0 . 50 -dc 0 . 002 - 16 x 12 drw-run 2 .cmd
n 02 -z 30 -dsr 65 -terr 0 . 50 -dc 0 . 008 - 16 x 12 drw-run 3 .cmd

it will have problem with sorting for values of the dc as the digit number will not be checked.
# 12  
Old 01-05-2012
just add the corresponding -k Xn sorting
Code:
sed 's/\([0-9][0-9]*\)/ & /g' mytst | sort -k 12n -k 14n -k 20n | sed 's/ //g'

This User Gave Thanks to ctsgnb For This Post:
# 13  
Old 01-05-2012
Quote:
Originally Posted by ctsgnb
If you add for example a line like :

Code:
n02-z30-dsr65-terr0.50-dc0.004-16x12drw-run10.cmd

in the middle of your example file...

You will see that my second command sort it correctly whereas my first proposal doesn't handle it correclty since it was only performing a numeric sorting on the '00n' field and not on the 'X' of the run'X' field which was therefore sorted as litteral instead of numeric so that "10" arrive before 6 (start with 1 and 1<6) but with the second solution, the numeric sorting also apply to the X of runX so 10 is not considered as the string 1+0 but as the number 10 so that 10>6 so the 6 will be displayed before the 10.
I understand now. Thank you for the explanation.

---------- Post updated at 02:11 PM ---------- Previous update was at 02:08 PM ----------

Quote:
Originally Posted by ctsgnb
just add the corresponding -k Xn sorting
Something like the one below then:

Code:
sed 's/\([0-9][0-9]*\)/ & /g' myfile | sort -k 12n -k 14n -k 20n | sed 's/ //g'

# 14  
Old 01-05-2012
... i meanwhile updated my previous post, depending on your requirement, maybe it can be a solution
 
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

List the files after sorting based on file content

Hi, I have two pipe separated files as below: head -3 file1.txt "HD"|"Nov 11 2016 4:08AM"|"0000000018" "DT"|"240350264"|"56432" "DT"|"240350264"|"56432" head -3 file2.txt "HD"|"Nov 15 2016 2:18AM"|"0000000019" "DT"|"240350264"|"56432" "DT"|"240350264"|"56432" I want to list the... (6 Replies)
Discussion started by: Prasannag87
6 Replies

2. Shell Programming and Scripting

Sorting with list, - 2 lists next to 200

Hi I was wondering if anyone knew the best way to have files displayed by list so that they were in numerical order? the problem I am having is I am using the ls and the head command to sort a group of 500 files into manageable 133 file bunches and transfer them to another directory were they will... (4 Replies)
Discussion started by: Paul Walker
4 Replies

3. Shell Programming and Scripting

Sorting a list of words one per line by their ending

Hello, My OS is Windows and therefore DOS. Hence I have no access to Unix tools. I am trying to sort a file in Urdu by the character by which it ends. Each word is on a separate line. As input, an example in English would help: fruit banana apple pear house I need the sort to be on the... (5 Replies)
Discussion started by: gimley
5 Replies

4. Shell Programming and Scripting

Sorting a list

I am trying to sort a list If you walk through the list, every you have passed both website1 and website2 and get back to website1, the last lines should be collected into one line and the process should start again. The following: http://www.website1.com http://www.website1.com... (2 Replies)
Discussion started by: locoroco
2 Replies

5. Shell Programming and Scripting

Perl: Sorting a hash value that is a list.

Hi Folks I am very much a newbie at perl but picking it up and I'm hoping you can help. I have a file input that details all the /etc/group files in our enterprise in the following format: "<host>:<group>:<gid>:<users>" I want to parse this data display it as the following:... (9 Replies)
Discussion started by: g_string
9 Replies

6. Shell Programming and Scripting

Sorting a list of filenames but keeping the path information.

Hi All I've googled around for this and can't see a way of doing it. I have a file that contains a number of records that are layed out something like the following. /path/to/directory/that/contains/a/file/I/need/filename.pdf The path itself can vary both in terms of the names and the... (7 Replies)
Discussion started by: Bashingaway
7 Replies

7. Shell Programming and Scripting

Splitting a list @list by space delimiter so i can access it by using $list[0 ..1..2]

EDIT : This is for perl @data2 = grep(/$data/, @list_now); This gives me @data2 as Printing data2 11 testzone1 running /zones/testzone1 ***-*****-****-*****-***** native shared But I really cant access data2 by its individual elements. $data2 is the entire list, while $data,2,3...... (1 Reply)
Discussion started by: shriyer
1 Replies

8. UNIX for Dummies Questions & Answers

Sorting list of files per date column

Hi all, I have a pecular issue in sorting these files (not an ls -lrt) in Solaris environment. All the below files are modified on November 4th, but I want to sort these files as per date (eg: 01May07_1623 = ddmmmyy_hhmm) Nov 4 18:27 SONYELEC00.GI22973.01May07_1623.gpg Nov 4 18:27... (10 Replies)
Discussion started by: shivaastrogun
10 Replies

9. UNIX for Advanced & Expert Users

help with sorting sequence in Unix C:sort -t ':' +0 -1 -n +1 -2 +2 -3 -o list list

Hi List is 000|2008-07-17|556543|RTJ|35-RTGJ|EYT 465|2008-11-10|567789|GHJ|45-DGHH|ETU 533|2008-09-06|567789|GHJ|45-DGHH|ETU How does it do it? sort -t ':' +0 -1 -n +1 -2 +2 -3 -o list list (6 Replies)
Discussion started by: gurvinder
6 Replies

10. Programming

Sorting in C++..

Hi, I need to do a sorting of 2 arrays. One array contains the values of both integer and character and other array can be anything. For example: Array={'1L','2C','NULL','23L','11L','4C','10L','9C'} Array= {'01-02-13-1x','02-11-23-3s','00-12-13-5f','NULL','22k',} If any of these arrays... (6 Replies)
Discussion started by: ronix007
6 Replies
Login or Register to Ask a Question