An interesting sort problem

Robert Nichols rnicholsNOSPAM at comcast.net
Fri Nov 13 19:32:31 UTC 2015


On 11/13/2015 12:32 PM, Ian Malone wrote:
> No missing quotes. It's an awk program, not a bash one, $0 is a bash
> variable. The only syntax errors I see are no brackets around the for
> statement and missing closing brace. My awk here is too old to support
> PROCINFO["sorted_in"], so here's a slight tweak using asort:
>
> awktest:
> ----
> {
>      lines[NR]=$NF " " $0
> }
>
> END {
>      #PROCINFO["sorted_in"]="@val_type_asc"
>      asort(lines, ordered)
>      for (ind = 1 ; ind<=length(ordered) ; ind++) {
>         line=ordered[ind]
>         j=index(line, " ")
>         print substr(line, j+1)
>      }
> }
> ----
>
> awktestinput:
> ----
> Friday Lemon abc xyz
> Saturday cucumber cool
> Sunday orange citrussy
> Monday apple computer
> ----
>
> $ awk -f awktest  < awktestinput
> Sunday orange citrussy
> Monday apple computer
> Saturday cucumber cool
> Friday Lemon abc xyz

Try it again with more than 10 lines in the input. That asort()
will be doing a _string_ sort, so with 120 input lines the order
will be 1, 10, 100, 101, 102, ... 109, 11, 110, 111, 112, ... 119,
12, 120, 13, 14, ... 19, 2, 20, 21, ... .

-- 
Bob Nichols     "NOSPAM" is really part of my email address.
                 Do NOT delete it.



More information about the users mailing list