#!/usr/bin/env python2.7 # vim:sts=2:sw=2 """ sorts lines (or tab-sep records) by md5, a quasi-random shuffle. optionally prepends with the md5 id too. brendan o'connor - anyall.org - github.com/brendano/cmdutils""" import hashlib,sys,optparse p = optparse.OptionParser() p.add_option('-k', type='int', default=False) p.add_option('-p', action='store_true') p.add_option('-n', action='store_true') opts,args=p.parse_args() lines = sys.stdin.readlines() getter=lambda s: hashlib.md5(s[:-1]).hexdigest() if opts.k: getter=lambda s: hashlib.md5(s[:-1].split("\t")[opts.k-1]).hexdigest() if not opts.n: lines.sort(key=getter) try: for line in lines: if opts.p: line = getter(line) + "\t" + line print line, except IOError: pass