~~~~~~~~ Title: Using cal and plain text to track things, Part II Date: 2023-11-27 10:45 PM CST Category: Tech Tags: BSD, Computing, FOSS (Free and Open Source Software), Linux, Non-religious post, Productivity, Unix Tips ## Status: published Back in September, I posted[a] about using the output of cal and plain text to track things. Here is the example of that format I listed in the post: ``` August 2023 Su Mo Tu We Th Fr Sa . 2 3 . 5 . 7 . . . . . . . . 16 . . . . . . . . 25 . . . . 30 . => using-cal-and-plain-text-to-track-things.html [a] 2023/08/02 326 45 3.0 1/1 ell 2023/08/03 Swimming ~30 minutes 2023/08/05 Swimming 50min med diff 2023/08/07 393 50 3.48 2/1 elliptical 2023/08/16 345 50 3.29 2/1 elliptical 2023/08/25 1 hour intense swimming 2023/08/30 333 44 3.00 2/2 elliptical ``` I got so much great feedback from some “FediFriends”* immediately after that post that the next day, I came up with a script to automate the process of creating the “filtered” cal output automatically: fcal[a]. => https://codeberg.org/rldane/scripts/src/branch/main/fcal [a] * post about what that means (for the uninitiated) coming soon The core of the script is only roughly* 20 lines of shell (glorious things can be done in 20 lines of shell, my good fellow!!), half of which processes command line options (I could never get into using getopt/getopts), the other half of which constructs a sed one-liner to do the actual filtering. * not counting spaces, comments, individual if/do lines, and super-simple functions like warn() and die() Feeding the same data printed manually above into fcal yields the following: ```~ $ fcal -o Aug 2 3 5 7 16 25 30 August 2023 Su Mo Tu We Th Fr Sa . 2 3 . 5 . 7 . . . . . . . . 16 . . . . . . . . 25 . . . . 30 . ``` Nobody ever said shell was beautiful, but dang if it isn’t insanely useful and quick to construct basic things!