Execution problem with sort the file based on contents

My input file:
>ali
ASSDDGHFHFHJFJHJDSDGSDGSDGSDGSDGSDGSDGDSGDSGSDGDSGSDGSDGDSGSDGGDSG
>zzz
ASdASDASDSADSADDSADJKHJDSADKLJADKLSAJDLJLKJLDASDDSADd
>abu
ASDASDFSAFASFSADFASDASDSADSADSADSADSADSADASDASdSADSADSADA
>aaa
MMMMASDSADSAMDASDSADSADSADSADSADDDDDDDDDDDDDDASDOIIEOUWIOEUQWIOEWQOEUWQIOEUWQIEOWQE

My desired output:
>aaa
MMMMASDSADSAMDASDSADSADSADSADSADDDDDDDDDDDDDDASDOIIEOUWIOEUQWIOEWQOEUWQIOEUWQIEOWQE
>ali
ASSDDGHFHFHJFJHJDSDGSDGSDGSDGSDGSDGSDGDSGDSGSDGDSGSDGSDGDSGSDGGDSG
>abu
ASDASDFSAFASFSADFASDASDSADSADSADSADSADSADASDASdSADSADSADA
>zzz
ASdASDASDSADSADDSADJKHJDSADKLJADKLSAJDLJLKJLDASDDSADd

How can I do to sort (descending order or ascending order) the file based on the contents inside each header?

Hi,... substitute the new line char for a escape char.... after that, substitute the combination escape char + new record char.... after that sort... after that go back to where we start... substitute the escape char for a new line....

That is:

tr '\n' '#' < INPUT_FILE | awk '{ aux=$0; gsub("#>","\n>",aux); print aux; }' | sort | tr '#' '\n' 

Hi,

After I trying this code:

tr '\n' '#' < INPUT_FILE | awk '{ aux=$0; gsub("#>","\n>",aux); print aux; }' | sort | tr '#' '\n' 

I get the output like:
>aaa
MMMMASDSADSAMDASDSADSADSADSADSADDDDDDDDDDDDDDASDOIIEOUWIOEUQWIOEWQOEUWQIOEUWQIEOWQE

>abu
ASDASDFSAFASFSADFASDASDSADSADSADSADSADSADASDASdSADSADSADA
>ali
ASSDDGHFHFHJFJHJDSDGSDGSDGSDGSDGSDGSDGDSGDSGSDGDSGSDGSDGDSGSDGGDSG
>zzz
ASdASDASDSADSADDSADJKHJDSADKLJADKLSAJDLJLKJLDASDDSADd

The output result is a bit different with what I'm desired. Do you know what is the main reason?
Thanks a lot :slight_smile:

---------- Post updated at 09:54 PM ---------- Previous update was at 01:14 AM ----------

Nobody can help me solve my problem?
Too complicated?! :frowning: