The Awk Programming Language (1988) [pdf]
I've got the source code to both the book (in English and French) as well as awk.  How?  I sent email to bwk that we were trying extend awk to be sort of threaded (think awk scripts as first class so you have awk foo { } awk bar { } and you could do foo | bar).  We called it bawk, BitMover's awk.<p>Anyhow, I asked Brian if we could base it off the one true awk and he tarred up ~bwk/awk and sent it to me.<p>I love that guy, the culture of the Bell Labs people and the people that worked with them is great.<p>I've stolen a bunch of awk ideas over the years. BitKeeper (first DSCM) has a programming "language" for digging info out of the repository.  For example, this:<p><a href="http://www.mcvoy.com/lm/bkdocs/dspec-changes-json-v.txt" rel="nofollow">http://www.mcvoy.com/lm/bkdocs/dspec-changes-json-v.txt</a><p>prints out the repo history as a json stream.  One of my guys said that it couldn't be done, heh, it could be :)<p>Everyone should learn some awk, it's so handy.