Strings in ascending order


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers Strings in ascending order
# 1  
Old 01-07-2013
Hammer & Screwdriver Strings in ascending order

Hi,

I have a sequence which has 30000 strings which looks like this

Code:
>string2991 234445
>string224 470561
>string121 675386
>string4098 177229
>string8049 255838
>string8 672382
>string1115 578415

I want it to be arranged in ascending order

Code:
>string8 672382
>string121 675386
>string224 470561
>string1115 578415
>string2991 234445
>string4098 177229
>string8049 255838

Can it be done?

Please do help.

Last edited by Scott; 01-10-2013 at 10:57 AM.. Reason: Code tags
# 2  
Old 01-07-2013
try:
Code:
awk '{a=$0;sub("^[^0-9]*","",a);b[a$1]=a":::"$0} END{for (i in b) print b[i]}' infile | sort -n | sed 's/.*::://'

or
Code:
sed 's/^\([^0-9]*\)\([0-9]*\)/\2 :::\1\2/' infile | sort -n | sed 's/.*::://'

This User Gave Thanks to rdrtx1 For This Post:
# 3  
Old 01-07-2013
It worked!! SmilieSmilie

---------- Post updated at 02:55 PM ---------- Previous update was at 02:54 PM ----------

Thanks very much!! It worked!!!
# 4  
Old 01-07-2013
also, another awk example without the need to pipe to sort and sed:
Code:
awk '{a=$1;sub("^[^0-9]*","",a);b[a]=$0; m?(0):(m=a); if (a<m) m=a; if (a>x) x=a;}
END{for (i=m; i<=x; i++) {if (b[i])print b[i]}}' infile

This User Gave Thanks to rdrtx1 For This Post:
# 5  
Old 01-08-2013
Quote:
Originally Posted by rdrtx1
also, another awk example without the need to pipe to sort and sed:
Code:
awk '{a=$1;sub("^[^0-9]*","",a);b[a]=$0; m?(0):(m=a); if (a<m) m=a; if (a>x) x=a;}
END{for (i=m; i<=x; i++) {if (b[i])print b[i]}}' infile

Hi rdrtx1,
At least on OS X this doesn't work. Since a is created by a call to sub(), it is being treated as a string instead of as a number in the comparisons that set the minimum and maximum values for the range to be printed. I believe that the script is working on OS X as specified by the standards. I haven't tried it on any other system to see if awk behaves differently on other systems.

If you change m?(0):(m=a) in your script to a += 0 (which converts a from a string to a number), it works as expected.
This User Gave Thanks to Don Cragun For This Post:
# 6  
Old 01-08-2013
How about:
Code:
sort -k1.8n infile

Here is the o/p:
Code:
# cat infile
>string2991 234445
>string224 470561
>string121 675386
>string4098 177229
>string8049 255838
>string8 672382
>string1115 578415

Code:
# sort -k1.8n infile
>string8 672382
>string121 675386
>string224 470561
>string1115 578415
>string2991 234445
>string4098 177229
>string8049 255838

This User Gave Thanks to Yoda For This Post:
 
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

List numerically in ascending order

Hello, I am running ubuntu 16.04 and trying to list all files inside a directory, I need to sort them in ascending order. While surfing on the site, I found an old thread but somehow it did not work. Link Ascending order with sort -nk2 myfile.txt command gives below output: file... (5 Replies)
Discussion started by: baris35
5 Replies

2. Shell Programming and Scripting

File in ascending order by row

Hi All I have a file like this: ID1 ref_A 10 ref_B 30 ref_C 5 ID2 ref_F 69 ref_G 12 ref_H 5 Every ID is followed by a string(ref_X) followed by a number(every number is referred to the previous ref) I would like to order the file like this(the column could be more, but always with the same... (4 Replies)
Discussion started by: giuliangiuseppe
4 Replies

3. Shell Programming and Scripting

How to list files in ascending order?

Hi, I need to list files in ascending order. Filenames are in format inpTDT_1, inpTDT_2, inpTDT_3 and so on. I want to list them in the ascending order based on the digit after underscore and send the output to a file. Please help (5 Replies)
Discussion started by: Neelkanth
5 Replies

4. Shell Programming and Scripting

Arrange values in ascending order

HI I have a file # vi assc values order fin 100 34 45 200 12 64 120 10 23 Here I need to check whether the values of second column"order" is arranged ascendingly Note: Always order column will be arranged either in ascending or descending order How to make it?... (1 Reply)
Discussion started by: Priya Amaresh
1 Replies

5. Shell Programming and Scripting

File listing in Ascending order

I have a multiple file with the following name like. file_0.csv file_1.csv file_2.csv file_3.csv file_4.csv file_5.csv file_6.csv file_7.csv file_7.csv file_8.csv file_9.csv file_10.csv file_11.csv file_12.csv file_13.csv file_14.csv (2 Replies)
Discussion started by: rakesh_arxmind
2 Replies

6. UNIX for Dummies Questions & Answers

sorting sequences in ascending order

Hi, I have this single file with a number of sequence inside it of format >string1 data >string100 data >string10 ..... >string5 ... >string67 ...... the dots represent data. I wanted to get the sequences arranged in ascending order like >string1 data >string5 (5 Replies)
Discussion started by: sonia102
5 Replies

7. Shell Programming and Scripting

Ascending order

How can I check if array is in ascending order? ---------- Post updated at 01:53 PM ---------- Previous update was at 01:25 PM ---------- Done it now (0 Replies)
Discussion started by: kristinu
0 Replies

8. UNIX for Advanced & Expert Users

merge two files in ascending order

Hello Friends, I want to merge two files in ascending order on the first field. And if the first field matches sort on 3rd field i.e, TXADDR should come ahead of RXADDR . file1 9 : TXADDR : 00000000 65 : TXDATA 0000000000000011 83 : TXDATA 0000000000000012 453 :... (10 Replies)
Discussion started by: user_prady
10 Replies

9. Shell Programming and Scripting

Ascending order within text

I appreciate all the help that I've already received but am running into one problem. I can find how to add something before a file with ascending numbers but not like this. I basically have a file that looks like this: 100 101 102 103 104 I need to add the following before each line with... (5 Replies)
Discussion started by: kerpm
5 Replies

10. UNIX for Dummies Questions & Answers

Sort / ascending order

What's the command to sort a file in ascending order and redirect the output to another file? Thanks!!!!!! (1 Reply)
Discussion started by: gyik
1 Replies
Login or Register to Ask a Question