[ale] cut

Greg Sabino Mullane greg at turnstep.com
Sat Mar 9 12:48:02 EST 2002



-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1


> ...The idea is to tell you which commands appear most in your 
> history and by how much.
> ...
> I've tried cut -d' ' -f1, but it doesn't work for some reason.

Cut only works on fixed field data, which history does not produce. The 
history output is separated by one *or more* spaces, and is more concerned 
with looking pretty by right-aligning the numbers and left-aligning the 
commands.

As mentioned, the awk program is an excellent choice for this:

> history 1000 | awk '{print $2}' | sort | uniq -c | sort -nr | head

I like the above: it is probably the best way to do it. However, in the 
spirit of TIMTOWDI, here's a perl solution that goes about it a bit 
differently. Note the use of $HISTFILE, a handy shell variable to know. 
You might want to play around with $HISTSIZE to generate larger sample 
sizes for your command frequency analysis. This is wrapped for email, 
but should be entered all on one line:

perl -ne '$C{$1}++ if /(\S+)/; END {for (sort 
{$C{$b} <=> $C{$a}} keys %C) { print "$C{$_} $_\n";} }' $HISTFILE | more

Ain't perl beautiful? :) Note also that the $HISTFILE does not contain 
the numbers, so we don't need to worry about offsetting into a field. 
Just for the record, here are my top five:

1037 fg
489 perl
322 cd
305 edit
200 l

(edit is an alias for emacs, and l is an alias for 'ls -lart')

Bored on a Saturday,
Greg Sabino Mullane greg at turnstep.com
PGP Key: 0x14964AC8 200203091242

-----BEGIN PGP SIGNATURE-----
Comment: http://www.turnstep.com/pgp.html

iD8DBQE8ikqdvJuQZxSWSsgRAvmCAKDl+TbnbYbC2PQj22ncSu7cCm/zsQCgyPVY
1Ujm3LyUe438XwCIHXkX9iI=
=7cfz
-----END PGP SIGNATURE-----



---
This message has been sent through the ALE general discussion list.
See http://www.ale.org/mailing-lists.shtml for more info. Problems should be 
sent to listmaster at ale dot org.






More information about the Ale mailing list