1#! /usr/bin/env python
2
3# 2)  Sorting Test
4#
5#     Sort an input file that consists of lines like this
6#
7#         var1=23 other=14 ditto=23 fred=2
8#
9#     such that each output line is sorted WRT to the number.  Order
10#     of output lines does not change.  Resolve collisions using the
11#     variable name.   e.g.
12#
13#         fred=2 other=14 ditto=23 var1=23
14#
15#     Lines may be up to several kilobytes in length and contain
16#     zillions of variables.
17
18# This implementation:
19# - Reads stdin, writes stdout
20# - Uses any amount of whitespace to separate fields
21# - Allows signed numbers
22# - Treats illegally formatted fields as field=0
23# - Outputs the sorted fields with exactly one space between them
24# - Handles blank input lines correctly
25
26import re
27import sys
28
29def main():
30    prog = re.compile('^(.*)=([-+]?[0-9]+)')
31    def makekey(item, prog=prog):
32        match = prog.match(item)
33        if match:
34            var, num = match.groups()
35            return int(num), var
36        else:
37            # Bad input -- pretend it's a var with value 0
38            return 0, item
39    for line in sys.stdin:
40        items = sorted(makekey(item) for item in line.split())
41        for num, var in items:
42            print "%s=%s" % (var, num),
43        print
44
45main()
46