File w/ many line pairs--how do I order based on 1st lines only?


Login or Register for Dates, Times and to Reply

 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting File w/ many line pairs--how do I order based on 1st lines only?
# 1  
File w/ many line pairs--how do I order based on 1st lines only?

I have a file in which the data is stored in pairs of lines. The first line (beginining with ">") is a header, the second line is a sequence.
Quote:
>gi|31425523|gb|AY987736.1|_Macrosiphum_rosae
TCCGTGGAGATGCACCACGAAGCT
>gi|512740870|gb|JX507490.1|_Macrosiphum_funestum
GTCGTGTAGAAA-CTGGTCTT
>gi|336390332|gb|HQ651228.1|_Cryptomyzus_maudamanti
GTTTTCGCACCAGCA
>gi|0|mcg|0|_Aulacorthum_albimagnoliae
A-GTCAGCAGTTAC
I would like to sort the file by species name. Desired output for the example file:
Quote:
>gi|0|mcg|0|_Aulacorthum_albimagnoliae
A-GTCAGCAGTTAC
>gi|336390332|gb|HQ651228.1|_Cryptomyzus_maudamanti
GTTTTCGCACCAGCA
>gi|512740870|gb|JX507490.1|_Macrosiphum_funestum
GTCGTGTAGAAA-CTGGTCTT
>gi|31425523|gb|AY987736.1|_Macrosiphum_rosae
TCCGTGGAGATGCACCACGAAGCT
I can use
Code:
sort -t'_' -k2

to alphabetize headers in the correct way, but I'm not sure how to bring the sequences (second lines of each pair) along for the ride. Can anyone help?
# 2  
Code:
$ 
$ cat f03
>gi|31425523|gb|AY987736.1|_Macrosiphum_rosae
TCCGTGGAGATGCACCACGAAGCT
>gi|512740870|gb|JX507490.1|_Macrosiphum_funestum
GTCGTGTAGAAA-CTGGTCTT
>gi|336390332|gb|HQ651228.1|_Cryptomyzus_maudamanti
GTTTTCGCACCAGCA
>gi|0|mcg|0|_Aulacorthum_albimagnoliae
A-GTCAGCAGTTAC
$ 
$ 
$ perl -ne '/^>.*?_(.*)$/; $x{$1}.=$_ }{ foreach $k (sort keys %x){print $x{$k}}' f03
>gi|0|mcg|0|_Aulacorthum_albimagnoliae
A-GTCAGCAGTTAC
>gi|336390332|gb|HQ651228.1|_Cryptomyzus_maudamanti
GTTTTCGCACCAGCA
>gi|512740870|gb|JX507490.1|_Macrosiphum_funestum
GTCGTGTAGAAA-CTGGTCTT
>gi|31425523|gb|AY987736.1|_Macrosiphum_rosae
TCCGTGGAGATGCACCACGAAGCT
$ 
$

This User Gave Thanks to durden_tyler For This Post:
Login or Register for Dates, Times and to Reply

Previous Thread | Next Thread
Thread Tools Search this Thread
Search this Thread:
Advanced Search

Test Your Knowledge in Computers #693
Difficulty: Medium
The rights to Unixware, as well as OpenServer, were acquired by UnXis in 2011.
True or False?

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Reading a file line by line and print required lines based on pattern

Hi All, i want to write a shell script read below file line by line and want to exclude the lines which contains empty value for MOUNTPOINT field. i am using centos 7 Operating system. want to read below file. # cat /tmp/d5 NAME="/dev/sda" TYPE="disk" SIZE="60G" OWNER="root"... (4 Replies)
Discussion started by: balu1234
4 Replies

2. UNIX for Beginners Questions & Answers

Get an output of lines in pattern 1st line then 10th line then 11th line then 20th line and so on.

Input file: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 (6 Replies)
Discussion started by: Sagar Singh
6 Replies

3. UNIX for Beginners Questions & Answers

How to align/sort the column pairs of an csv file, based on keyword word specified in another file?

I have a csv file as shown below, xop_thy 80 avr_njk 50 str_nyu 60 avr_irt 70 str_nhj 60 avr_ngt 50 str_tgt 80 xop_nmg 50 xop_nth 40 cyv_gty 40 cop_thl 40 vir_tyk 80 vir_plo 20 vir_thk 40 ijk_yuc 70 cop_thy 70 ijk_yuc 80 irt_hgt 80 I need to align/sort the csv file based... (7 Replies)
Discussion started by: dineshkumarsrk
7 Replies

4. UNIX for Advanced & Expert Users

Need to combine two lines in a file based on first character of each line in a file

Hi, I have a requirement where I need to combine two lines in a file based on first character of each line in a file. Please find the sample content of the file below: Code: _______________________ 5, jaya, male, 4-5-90, single smart 6, prakash, male, 5-4-84, married fair 7, raghavi,... (1 Reply)
Discussion started by: jayaP
1 Replies

5. UNIX for Dummies Questions & Answers

Need to combine two lines in a file based on first character of each line in a file

Hi, I have a requirement where I need to combine two lines in a file based on first character of each line in a file. Please find the sample content of the file below: Code: _______________________ 5, jaya, male, 4-5-90, single smart 6, prakash, male, 5-4-84, married fair 7, raghavi,... (1 Reply)
Discussion started by: jayaP
1 Replies

6. Shell Programming and Scripting

Help with order lines from a file based on a pattern

Hi I need to order these lines from a txt file my file looks like this IMSI ........................ 1234567890 APN ......................... INTERNET.COM APN ......................... MMS.COM APN ......................... WAP.COM APN ......................... BA.COM IMSI... (4 Replies)
Discussion started by: alone77
4 Replies

7. Shell Programming and Scripting

Remove certain lines from file based on start of line except beginning and ending

Hi, I have multiple large files which consist of the below format: I am trying to write an awk or sed script to remove all occurrences of the 00 record except the first and remove all of the 80 records except the last one. Any help would be greatly appreciated. (10 Replies)
Discussion started by: nwalsh88
10 Replies

8. Shell Programming and Scripting

join based on line number when one file is missing lines

I have a file that contains 87 lines, each with a set of coordinates (x & y). This file looks like: 1 200.3 -0.3 2 201.7 -0.32 ... 87 200.2 -0.314 I have another file which contains data that was taken at certain of these 87 positions. i.e.: 37 125 42 175 86 142 where the first... (1 Reply)
Discussion started by: jackiev
1 Replies

9. Shell Programming and Scripting

How to swap order of pairs of lines?

This seems to be a question whose answer uses sed or awk. For a file like: a b c d e How to swap the order of the line pairs, to end up with: b a d c e All lines from the original file need to wind up in the output file. (8 Replies)
Discussion started by: rd5817
8 Replies

10. Shell Programming and Scripting

reading lines in pairs from file in ksh

I need to read pairs of lines from a file and compare them. We can assume that the number of lines in the file is even. Can i do it in korn shell? (4 Replies)
Discussion started by: ytokar
4 Replies

Featured Tech Videos