In my quest to migrate off of over-engineered big-tech solutions to trivial problems I have just downloaded the list I maintained on Goodreads of interesting books to one day, maybe, get around to reading. Instead, I now use a recfile[1], allowing me to trivially search by tags when looking for a new book.
Goodreads provides an export as CSV option (yay!) from which I was able to hack together the following AWK script for pulling out the book title, author, date added to the list, and bookshelves (which I use as tags) and then printing them in a recfile format. With a little bit of preamble, this just works.
awk -v FPAT='[^,]*|"[^"]+"' 'BEGIN{ print "# -*- mode: rec -*-"; print ""; print "%rec: To Read"; print ""; } /to-read/ { gsub("\"","",$2); print "Name: " $2; print "Author: " $3; print "Date: " $16; gsub("\"","",$17); print "Tags: " substr($17,10); print ""; }' $FILE
For more explanation on the FPAT variable when parsing CSV, take a look at the StackOverflow post[2] and the GNU docs[3] that helped me figure that out.
[2] :: StackOverflow :: What's the most robust way to efficiently parse CSV using AWK?
[3] :: GNU.org :: GAWK :: Splitting By Content
Last Updated: 2021-01-03