"Sort and vectors on awk"

Post #302771639 by Don Cragun on Thursday 21st of February 2013 06:36:16 AM

Full Discussion: Sort and vectors on awk
Here are three ways to sort your array that should work even if you don't have gawk:
Code:
awk '{  # Read the input file in to array a.
        a[$1] = $2
}       
END {   # Use the sort utility to print array a in sorted order.
        print "print | sort:"
        cmd = "sort -k2nr" # Sort 2nd field as a numeric value in reverse order
        for(i in a) print i, a[i] | cmd
        close(cmd)

        # Copy a into b and c using an insertion sort to keep b and c sorted as
        # entries are added.
        for(k in a) {
                b[++nc] = k
                c[nc] = a[k]
                for(i = nc; i > 1; i--)
                        if(c[i] > c[i - 1]) {
                                tmp = b[i - 1]
                                b[i - 1] = b[i]
                                b[i] = tmp
                                tmp = c[i - 1]
                                c[i - 1] = c[i]
                                c[i] = tmp
                        } else  break;
        }
        print "print sorted b and c"
        for(i = 1; i <= nc; i++) print b[i], c[i]

        # Loop through original array printing and deleting the largest value.
        # This loop destroys the array as it prints it.
        print "print largest value in loop:"
        for(i = 1; i <= NR; i++) {
                max = 0
                for(j in a) if(a[j] > max) {
                        max = a[j]
                        mj = j
                }
                print mj, a[mj]
                delete a[mj]
        }
}' file.txt

On Solaris/SunOS systems, use /usr/xpg4/bin/awk or nawk instead of awk. On AIX or any other UNIX or Linux system, this should be fine as shown.

With your sample input, this awk script produces:
Code:
print | sort:
Caps 12
cols 10
cans 9
print sorted b and c
Caps 12
cols 10
cans 9
print largest value in loop:
Caps 12
cols 10
cans 9

 
Test Your Knowledge in Computers #80
Difficulty: Easy
Many operating systems today, including Android, Chrome OS, Steam OS, and myriad embedded systems for devices, are based on Linux.
True or False?

9 More Discussions You Might Find Interesting

1. Homework & Coursework Questions

awk sort help

1. The problem statement, all variables and given/known data: I dont know what I do wrong, I am trying to create shell programming database: I have this command first: && > $fname ... echo $Name:$Surname:$Agency:$Tel:$Ref: >> $fname then I have echo " Name Surname Agency Tel... (2 Replies)
Discussion started by: jeht
2 Replies

2. Shell Programming and Scripting

Sort in AWK

Hi, I usually use Access to sort data however for some reason its not working. Our systems guys and myself cannot figure it out so ive tried to use AWK to do the sorting. The file is made up of single lines in the format ... (4 Replies)
Discussion started by: eknryan
4 Replies

3. Shell Programming and Scripting

Using Awk to efficiently substitute values using 3 vectors

I'm trying to efficiently combine the fields of two vectors (vectors b and c) into a new vector (vector d) as defined by instructions from a 3rd vector (vector a). So vector a has either a 1 or 2 in each field specifying which vector (b or c respectively) should go into that field. Vector a is... (4 Replies)
Discussion started by: LaTortuga
4 Replies

4. Shell Programming and Scripting

Sort with Awk, sed ....

I want to print out the lines that have the max value in column 3. and count the occurrence of column 1; if there are more than one occurrences, line with highest column 2 value will be printed. I have this data: input: AV 234 25 AV 256 76 AS 421 34 AV 124 76 BD 136 71 BD 241 76 AW... (10 Replies)
Discussion started by: aydj
10 Replies

5. Shell Programming and Scripting

Awk sort and unique

Input file --------- 12:name1:|host1|host1|host2|host1 13:name2:|host1|host1|host2|host3 14:name3: ...... Required output --------------- 12:name1:host1(2)|host1(1) 13:name2:host1(2)|host2(1)|host3(1) 14:name3: where (x) - Count how many times field appears in last column ... (3 Replies)
Discussion started by: greycells
3 Replies

6. Shell Programming and Scripting

awk sort

input file abc1 abc23 abc12 abc15 output abc1 abc12 abc15 abc23 (9 Replies)
Discussion started by: yanglei_fage
9 Replies

7. Shell Programming and Scripting

how to sort inside awk

Hi guys I have a problem trying to sort output produced with the help of 'Awk'. After "grepping" the pattern out of the file and sorting it, sort command acts a little strange: $ grep -w -n -i "p*cmo" /bb/data/rmt4db.lrl | sort -r 32:P1096CMO 63836 344 passthru 31:P1084CMO 121335 329 passthru... (3 Replies)
Discussion started by: aoussenko
3 Replies

8. Shell Programming and Scripting

Need help on horizontal sort with AWK

dear friends.. i have data : 20130603;ABCD;ABCD1;14030;51271;0.000;0.000;21.000 20130603;ABCD;ABCD2;14030;51272;4853.000;53591.000;40539.000 20130603;ABCD;ABCD3;14030;51273;38024.000;385068.000;396424.000 20130603;ABCD;EFGH1;14030;51334;285879.000;563964.000;141780.000... (4 Replies)
Discussion started by: buncit8
4 Replies

9. Shell Programming and Scripting

Sort String using awk

Hi, I need help to sort string using awk. I don't want to use sed or perl as I want to add this functionality in my existing awk script Basically I have a variable in AWK which is string with comma separated value. I want to sort that string before using that variable in further processing for... (10 Replies)
Discussion started by: rocky.community
10 Replies
Net::LDAP::Control::Sort(3)				User Contributed Perl Documentation			       Net::LDAP::Control::Sort(3)

NAME
Net::LDAP::Control::Sort - Server Side Sort (SSS) control object SYNOPSIS
use Net::LDAP::Control::Sort; use Net::LDAP::Constant qw(LDAP_CONTROL_SORTRESULT); $sort = Net::LDAP::Control::Sort->new( order => "cn -phone" ); $mesg = $ldap->search( @args, control => [ $sort ]); ($resp) = $mesg->control( LDAP_CONTROL_SORTRESULT ); print "Results are sorted " if $resp and !$resp->result; DESCRIPTION
"Net::LDAP::Control::Sort" is a sub-class of Net::LDAP::Control. It provides a class for manipulating the LDAP Server Side Sort (SSS) request control 1.2.840.113556.1.4.473 as defined in RFC-2891 If the server supports sorting, then the response from a search operation will include a sort result control. This control is handled by Net::LDAP::Control::SortResult. CONSTRUCTOR ARGUMENTS
order A string which defines how entries may be sorted. It consists of multiple directives, spearated by whitespace. Each directive describes how to sort entries using a single attribute. If two entries have identical attributes, then the next directive in the list is used. Each directive specifies a sorting order as follows -attributeType:orderingRule The leading "-" is optional, and if present indicates that the sorting order should be reversed. "attributeType" is the attribute name to sort by. "orderingRule" is optional and indicates the rule to use for the sort and should be valid for the given "attributeType". Any one attributeType should only appear once in the sorting list. Examples "cn" sort by cn using the default ordering rule for the cn attribute "-cn" sort by cn using the reverse of the default ordering rule "age cn" sort by age first, then by cn using the default ordering rules "cn:1.2.3.4" sort by cn using the ordering rule defined as 1.2.3.4 METHODS
As with Net::LDAP::Control each constructor argument described above is also available as a method on the object which will return the current value for the attribute if called without an argument, and set a new value for the attribute if called with an argument. SEE ALSO
Net::LDAP, Net::LDAP::Control::SortResult, Net::LDAP::Control, http://www.ietf.org/rfc/rfc2891.txt AUTHOR
Graham Barr <gbarr@pobox.com> Please report any bugs, or post any suggestions, to the perl-ldap mailing list <perl-ldap@perl.org> COPYRIGHT
Copyright (c) 1999-2004 Graham Barr. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. perl v5.16.3 2013-06-07 Net::LDAP::Control::Sort(3)

Featured Tech Videos

All times are GMT -4. The time now is 07:08 PM.
Unix & Linux Forums Content Copyright 1993-2019. All Rights Reserved.
Privacy Policy