
A second volume collecting Bentley's Communications of the ACM columns.
The structure can be a bit confusing if you've only seen one liners because it has a lot of defaults that kick in when not specified.
The pleasant surprise from learning to use awk was that bpftrace suddenly became much more understandable and easier to write as well, because it's partially inspired by awk.
https://en.m.wikipedia.org/wiki/Jon_Bentley_(computer_scient...
Some of the same articles, but with updates and added reader comments.
(I posted Amazon, but there is a ton on the used market)
I have both, and they are good.
In one of them, Bentley shows some advanced uses of awk, involving its associative arrays, in a short awk program to do some sort of processing, and says that an equivalent C program would be a few hundred lines, IIRC.
How to Solve It, by Georg Polya. A famous Hungarian mathematician. A text on general problem solving principles or techniques. A classic.
How to Solve It by Computer, by Dromey, an AU CS professor. In the same spirit as the Polya book, but applied to iteratively working out algorithms and pseudocode for common important programming problems.
The K&R C book. What to say.
The Unix Programming Environment, by Kernighan and Pike. Ditto.
Programming Pearls, and More Programming Pearls, by Jon Bentley. Among many other things, some clever / advanced uses of awk.
Writing Efficient Programs, also by Bentley. I had mentioned it on HN earlier, and someone replied saying they had used it in real life, and it was gold.
SQL for Professionals, by authors whose names I forget.
The Object Primer, by can't remember who, but good.
A Unix book by Kochan, IIRC.
Object-Oriented Software Construction, by Bertrand Meyer, creator of the Eiffel programming language.
A book on object-oriented analysis / design, can't remember the name, by Rebecca Wirfs-Brock (?) and others. Learned about CRC cards from it. Very cool concept and technique.
A book on Object-Oriented Design, by Grady Booch, from a time before he co-invented UML. Forget the exact name.
[1] Even more so than in most other common examples where awk programs are shorter than those in other languages.