I have a text file with 559 lines and I only need to sort the labels in a particular part of the file by the longest to the shortest string. I was thinking to use sort
but I don't really have a delimiter to use and I am trying to determine the start and end to use flag -k
.
Here is an example of my text file:
^(.*a)$0UMYBPEB(.*)$1$|\0ybpeb\1
^(.*a)$0UMYBPUK(.*)$1$|\0yuk \1
^(.*a)$0UMYBPUKE(.*)$1$|\0yuke \1
^(.*a)$0USAAHPERD(.*)$1$|\0aahpe\1
^(.*a)$0USAASC(.*)$1$|\0aasc \1
^(.*a)$0USAATF(.*)$1$|\0aatf \1
^(.*a)$0USABARIS(.*)$1$|\0abar \1
^(.*a)$0USABOR(.*)$1$|\0abor \1
^(.*a)$0USACA(.*)$1$|\0aca \1
^(.*a)$0USACI(.*)$1$|\0aci \1
^(.*a)$0USACMLA(.*)$1$|\0acmla\1
^(.*a)$0USACSANZ(.*)$1$|\0acsan\1
^(.*a)$0USACTA(.*)$1$|\0acta \1
^(.*a)$0USACTACLASS(.*)$1$|\0cass \1
^(.*a)$0USAD(.*)$1$|\0adbus\1
^(.*a)$0USADAMMATTHEW(.*)$1$|\0adam \1
^(.*a)$0USAEA(.*)$1$|\0aea \1
^(.*a)$0USAFAS(.*)$1$|\0afas \1
^(.*a)$0USAFRICAN(.*)$1$|\0afric\1
^(.*a)$0USAGI(.*)$1$|\0agi \1
^(.*a)$0USAGO(.*)$1$|\0ago \1
Notice the labels I am referring to are after the first $
before (.*)
The result I want is the longest to the shortest label:
^(.*a)$0USADAMMATTHEW(.*)$1$|\0adam \1
^(.*a)$0USACTACLASS(.*)$1$|\0cass \1
^(.*a)$0USAFRICAN(.*)$1$|\0afric\1
^(.*a)$0USAAHPERD(.*)$1$|\0aahpe\1
^(.*a)$0USACSANZ(.*)$1$|\0acsan\1
^(.*a)$0UMYBPUKE(.*)$1$|\0yuke \1
^(.*a)$0USABARIS(.*)$1$|\0abar \1
^(.*a)$0USACMLA(.*)$1$|\0acmla\1
^(.*a)$0UMYBPEB(.*)$1$|\0ybpeb\1
^(.*a)$0UMYBPUK(.*)$1$|\0yuk \1
^(.*a)$0USAFAS(.*)$1$|\0afas \1
^(.*a)$0USAASC(.*)$1$|\0aasc \1
^(.*a)$0USAATF(.*)$1$|\0aatf \1
^(.*a)$0USABOR(.*)$1$|\0abor \1
^(.*a)$0USACTA(.*)$1$|\0acta \1
^(.*a)$0USACA(.*)$1$|\0aca \1
^(.*a)$0USACI(.*)$1$|\0aci \1
^(.*a)$0USAEA(.*)$1$|\0aea \1
^(.*a)$0USAGI(.*)$1$|\0agi \1
^(.*a)$0USAGO(.*)$1$|\0ago \1
^(.*a)$0USAD(.*)$1$|\0adbus\1