Script / sort question; sort on last field of a line?

Chris F.A. Johnson cfaj-uVmiyxGBW52XDw4h08c5KA at public.gmane.org
Thu May 4 06:13:54 UTC 2006


On Thu, 4 May 2006, Walter Dnes wrote:

>  How do I sort on the last (or 2nd last or whatever) field of a line?
>
>  One awkward possibility involves rewriting the lines backwards,
> sorting on what is now the first field, and rewriting the lines
> backwards a second time.  I'm not aware of a utility to do write lines
> backwards.  I am *NOT* thinking of "tac" which writes the lines
> unaltered but reverses their order.  I want to write *EACH INDIVIDUAL
> LINE* backwards.  The following script does what I want...
>
> #!/bin/bash
> while read
> do
>  line_out=""
>  line_pointer=$(( ${#REPLY} - 1 ))
>  while [[ ${line_pointer} -ge 0 ]]
>  do
>    line_out="${line_out}${REPLY:${line_pointer}:1}"
>    line_pointer=$(( ${line_pointer} - 1 ))
>  done
>  echo "${line_out}"
> done

awk '{ printf "%s\t%s\n", $NF, $0 }' | sort | cut -f2-

     Use $(NF-1) for penultimate field.

-- 
    Chris F.A. Johnson                      <http://cfaj.freeshell.org>
    ===================================================================
    Author:
    Shell Scripting Recipes: A Problem-Solution Approach (2005, Apress)
--
The Toronto Linux Users Group.      Meetings: http://tlug.ss.org
TLUG requests: Linux topics, No HTML, wrap text below 80 columns
How to UNSUBSCRIBE: http://tlug.ss.org/subscribe.shtml





More information about the Legacy mailing list