Sorting alphanumeric strings without a pattern


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Sorting alphanumeric strings without a pattern
# 1  
Old 06-04-2012
Sorting alphanumeric strings without a pattern

Good evening to all!!
I'm facing this problem:

I saved in a txt a list of files name (one txt for every folder):

hello0.jpg
hello1.jpg
hello10.jpg
hello11.jpg
hello12.jpg
hello13.jpg
hello14.jpg
hello15.jpg
hello16.jpg
hello17.jpg
hello18.jpg
hello19.jpg
hello2.jpg
hello20.jpg
hello21.jpg
hello22.jpg
hello23.jpg
hello24.jpg
hello3.jpg
hello4.jpg
hello5.jpg
hello6.jpg
hello7.jpg
hello8.jpg
hello9.jpg

and I would like to sort them using the numbered part.
Using sort -n I get the aforementioned sorting.
The real problem is that I don't have a fixed pattern for files name (otherwise I could use sort with -k).
It could be:

hello0.jpg
helloagain0.jpg
hello1_0.jpg

Only thing I know is that all files in the same folder will have same pattern.

Any help is appreciated!!
# 2  
Old 06-04-2012
One can extract the numeric part, paste them together and sort by newly added column, then get rid if the added column on the output:

Code:
$ cat aa
qwe1.asd
zxc3.ewq
wer4.tre
qweqwe2.asd
$
$ cat aa|tr -d '[:alpha:]'|paste aa - | sort -k2,2n | cut -f1
qwe1.asd
qweqwe2.asd
zxc3.ewq
wer4.tre
$

# 3  
Old 06-05-2012
Thanks a lot for your super fast reply!!
Does this work even with this filename:

JonnyDouble01_pg001.jpg
JonnyDouble01_pg002.jpg
.....

where there are more than one numeric part (one is the same for all files, the other is the key to sorting...)

---------- Post updated 06-05-12 at 05:05 AM ---------- Previous update was 06-04-12 at 04:01 PM ----------

Using these files, I can't get to sort them:

h0ello0.jpg
h1ello1.jpg
h2ello10.jpg
h3ello11.jpg
h4ello12.jpg
h5ello13.jpg
h6ello14.jpg
h7ello15.jpg
h8ello16.jpg
h9ello17.jpg
h10ello18.jpg
h1ello19.jpg
h12ello2.jpg
h13ello20.jpg
h14ello21.jpg
h15ello22.jpg
h16ello23.jpg
h17ello24.jpg
h18ello3.jpg
h19ello4.jpg
h20ello5.jpg
h21ello6.jpg
h22ello7.jpg
h23ello8.jpg
h24ello9.jpg


That's because they have more than one numeric part.
Only common things among all files is that the are numbered in the end of the name (before the extension).

Only way I found to srt them is to remove the extension (.jpg or whatever), than read one char at a time from the end of each string and stop when the char isn't a number.

That's the starting point of the numeration and I can use sort -k option...

Now I need to find correct commands!Smilie
# 4  
Old 06-05-2012
A crude way:

Code:
sed 's/.*[^0-9]\([0-9]*\)\..*/\1/g' <filename>|paste - <filename>|sort -nk1|awk '{print $2}'

# 5  
Old 06-05-2012
Slightly less crude Smilie
Code:
sed 's/.*[^0-9]\([0-9]*\)\./\1 &/' file | sort -n | cut -d" " -f2-

# 6  
Old 06-05-2012
That really helped me!!!!
Thanks a lot to everyone.
Last question: are you aware of any limitation of this approach? i.e. any file name it can't sort correctly?
# 7  
Old 06-05-2012
The file names need to have an extension, or it will not work..
Here is an alternative sed that should work for any pattern, you could try:
Code:
sed 's/.*[^0-9]\([0-9][0-9]*\)[^0-9]*$/\1 &/'

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Include strings between a pattern

Hi, I have two files: File1: sample statements1 <UID = " " PWD = " "> sample statements2 File2: UID ="admin" PWD ="password" (6 Replies)
Discussion started by: manid
6 Replies

2. Shell Programming and Scripting

Sorting content between match pattern and move on with awk and sed

S 0.0 0.0 (reg, inst050) k e f d c S 0.0 0.0 (mux, m030) k g r s x v S 0.0 0.0 (reg, inst020) q s n m (12 Replies)
Discussion started by: ctphua
12 Replies

3. UNIX for Dummies Questions & Answers

Want to sort a file which contains alphanumeric strings

I want to sort a file which contains alphanumeric string. bash-3.00$ cat abc mtng1so mtng2so mtng11so mtng9so mtng23so mtng7so hstg2so hstg9so hstg1so hstg11so hstg13so bash-3.00$ Want output like this, using one liner. hstg1so (1 Reply)
Discussion started by: Raza Ali
1 Replies

4. Shell Programming and Scripting

Sorting block of lines based on specified strings

Below is the part of contents of a file cat outputFile.txt :APP-MS-service_monitoring-118054-DiskFilling-S Description=Disk is getting filled. If Condition=If Event/Log Level(ANY) and matching substring &quot;DiskFilling&quot; Log: xx.x.x..xx.: 4 days 1:33:54.42 Date and time=03-18-2013... (2 Replies)
Discussion started by: vivek d r
2 Replies

5. Shell Programming and Scripting

Sorting strings in reverse order

Hello, I have a large database of words and would like them sorted in reverse order i.e. from the end up. An example will make this clear: I have tried to write a program in Perl which basically takes the string from the end and tries to sort from that end but it does not seem... (5 Replies)
Discussion started by: gimley
5 Replies

6. UNIX for Dummies Questions & Answers

Sorting of alphanumeric filenames..

Hi All, I want sort following files in ascending order. exp_installer_CC4160-file10.dmp exp_installer_CC4160-file11.dmp exp_installer_CC4160-file12.dmp exp_installer_CC4160-file13.dmp... (3 Replies)
Discussion started by: gramakrishna
3 Replies

7. Programming

Sorting a vector of strings into numerical order.

I have a vector of strings that contain a list of channels like this: 101,99,22HD,432,300HD I have tried using the sort routine like this: sort(mychans.begin(),mychans.end()); For some reason my channels are not being sorted at all. I was hoping someone might have some input that might... (2 Replies)
Discussion started by: sepoto
2 Replies

8. Shell Programming and Scripting

Sorting with non- and alphanumeric characters

Hi guys, I'm new to this forum and I'm not a UNIX expert. I can't figure out this certain problem i'm having: I need to sort some words, some of the words are annotations (enclosed within < and >). I need to have them sorted alphabetically with all non-alphanumeric characters up front. For... (2 Replies)
Discussion started by: fed.m.ang
2 Replies

9. UNIX for Advanced & Expert Users

alphanumeric Sorting

Hi , I have a requirement where one column have to be sorted (delimiter is pipe) for eg: My input filed is as below 1|FIAT|0010103|23011|01/01/2000|31/12/9999|1.15 2|232|613|1 2|234|743|1 2|234|793|1 2|234|893|1 1|FIAT|0010103|23012|01/01/2000|31/12/9999|1.15 2|230|006|0 2|230|106|0... (9 Replies)
Discussion started by: laxmi131
9 Replies

10. Shell Programming and Scripting

shell program for sorting strings in an alphabetical order

Hi, I trying to find the solution for writing the programming in unix by shell programming for sorting thr string in alphabetical order. I getting diffculty in that ,, so i want to find out the solution for that Please do needful Thanks Bhagyesh (1 Reply)
Discussion started by: bp_vanarse
1 Replies
Login or Register to Ask a Question