(You made me curious: there are used copies at Amazon starting at around $6.00[1].)
[1] http://www.amazon.com/gp/offer-listing/020107981X/ref=dp_olp...
http://www.catonmat.net/blog/awk-book/
It teaches Awk through many practical examples, so called one-liners, that are small and short programs that just do one task. Such as joining lines, printing lines matching a pattern, summing up numbers on lines, converting text, etc.
This 'NoSQL' has absolutely no similarity to the 'NoSQL' databases of the last few years (and predates them all by many years). Instead it's a tool to manage databases of plain text files in the Unix environment. Seamlessly ties together several parts of Unix toolchain, with Awk as the centerpiece. Has surprising features, like searches with joins between tables (i.e., files).
I'll also second that the Aho Kernighan Awk book is a beautiful piece of work.
bash..$ sqlite3 books.sqlite
sqlite$ create table books ( title varchar(128), author varchar(128) );
sqlite$ insert into books (title, author) values ("Snow Crash", "Neal Stephenson");
sqlite$ .quit
bash..$ echo "select * from books;" | sqlite3 books.sqlite
Snow Crash|Neal Stephenson
[1] http://sqlite.org/ $ sqlite3 books.sqlite "select * from books"If you need a database, you really shouldn't allow the text to be parsed as anything else than originally intended. With "just text with a non-rigid structure" it's just too easy to make a silly mistake. So what is the advantage here, given we have bdb and sqlite on almost every machine nowadays?
Or the other way - if you need something human-readable, why use is as a database? Why not keep the data where the data belongs and generate the reports when needed from there?