sorting sequences in ascending order


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers sorting sequences in ascending order
# 1  
Old 09-25-2012
Question sorting sequences in ascending order

Hi,
I have this single file with a number of sequence inside it of format

Code:
>string1
data
>string100
data
>string10
.....
>string5
...
>string67
......

the dots represent data.

I wanted to get the sequences arranged in ascending order like
Code:
>string1
data
>string5
data
>string10
.....
>string67

I used sort -n filename command but it ddint work.I dont want to split the files just want to arrange the sequences in consecutive order.

Could some one help me!!
Thanks

Last edited by Scrutinizer; 09-25-2012 at 12:48 PM.. Reason: code tags
# 2  
Old 09-25-2012
use a tag sort
Code:
awk '/^string/ {printf("%s|", $0); next}
       {print $0} ' infile | sort |
awk -F '|'  ' {print $1; print $2}' > sortedfile

# 3  
Old 09-25-2012
Suggesting slight modifications to Jim's solution (assuming the % sign does not occur in the input):
Code:
awk '/^>string/ {if(NR>1) print "";printf("%s|", $0); next}{printf("%%%s",$0)}END{print ""}' inputfile | 
sort -nk1.8|
awk -F'|' '{gsub("%",RS,$2);printf "%s",$1;print $2}'


Last edited by elixir_sinari; 09-25-2012 at 12:02 PM..
# 4  
Old 09-25-2012
Quote:
Originally Posted by jim mcnamara
use a tag sort
Code:
awk '/^string/ {printf("%s|", $0); next}
       {print $0} ' infile | sort |
awk -F '|'  ' {print $1; print $2}' > sortedfile


Hi I tried using this but it sorted it in a order like this
Code:
>string 1
>string 100
....
>string 109
>string10
>string110
...
>string 119
>string11

.

it rearranged in a different order.
I didnt quite understand.Did i do it wrong?
Since I am not a programmmer couldnt understand the code so much.
But is there a easier way to sort sequences inside a file?
Thanks a lot thoughSmilie

Last edited by Scrutinizer; 09-25-2012 at 12:48 PM.. Reason: code tags
# 5  
Old 09-25-2012
What does your data look like exactly?

Quote:
Originally Posted by sonia102
>string 109
>string10
>string110
Is there or is there not a space before the numeric sequence begins? jim's solution won't give you a numerical sort in either case, but elixir's will if there is no space.

Is >string actually present in your input data or are you using it as a placeholder for some other, possibly varying, text? Is data always a single line?

If you are simplifying the problem, don't. Instead, paste a sample of actual data which includes as many special cases as you can think of.

Regards,
Alister

---------- Post updated at 11:40 AM ---------- Previous update was at 11:31 AM ----------

If the sample data in your first post is faithful to your real data, the following will work:
Code:
paste - - < file | sort -nk1.8 | sed 's/<tab>/\
/'

Replace <tab> with a literal tab character (at the terminal, usually control-v then tab key). A newline must immediately follow the backslash at the end of the line.


If it only needs to run on a GNU system (Linux, typically):
Code:
paste - - < file | sort -nk1.8 | sed 's/\t/\n/'

Regards,
Alister
This User Gave Thanks to alister For This Post:
# 6  
Old 09-25-2012
Hi
Thanks for the insight!! My file has a number of sequences inside it and it starts by annotation as shown.Also string doesnt have space before numbering.
thefile looks like this:

Code:
>string1
DFRTHYUIKVWAAC
>string121
QWERFGSAJJJKLLLL
>string100
HTQKQQKQKQKRTOTGLG

and so on.
It has around 800 such sequences in that file.
Thanks

Last edited by Scrutinizer; 09-25-2012 at 12:48 PM.. Reason: code tags
 
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. 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

2. 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

3. 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

4. UNIX for Dummies Questions & Answers

Strings in ascending order

Hi, I have a sequence which has 30000 strings which looks like this >string2991 234445 >string224 470561 >string121 675386 >string4098 177229 >string8049 255838 >string8 672382 >string1115 578415 I want it to be arranged in ascending order >string8 672382 >string121... (5 Replies)
Discussion started by: siya@
5 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. Shell Programming and Scripting

Sorting values of hash in ascending order using Perl

I want to sort values of a hash in ascending order. my %records; for my $value (sort values %records){print $value,"\n";} When I use the above code I get values in this order: 1,10,11,2,3,4,5,6,7,8,9. But, I need values in my output in this order: 1,2,3,4,5,6,7,8,9,10,11. Can Someone... (1 Reply)
Discussion started by: koneru_18
1 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