I wrote something similar (but necet really finished it), called 'gut', in Go a few years back. Funny thing is, that I literally never use it. I thought splitting on regexes and that stuff would be super useful, but it turns out that I just use Perl one-liners instead. And Perl is available on something like 99.99% of all *nix machines, which my own 'cut'-substitute isn't.
Still a good exercise for me to write it, and I assume for OP too.
It was indeed an great exercise! Part of the motivation for me was also performance oriented. I should add some Perl one liners to the benchmarks to see where they land as well. My experience is that they are usually a bit slower than awk.
What tool would you recommend to someone who is starting out and wants to learn to write nifty scripts this day in age? I’m currently studying bash but there are so many scripting languages that I hear about and it’s hard to know what to invest time into.
Invest time into what you need to get your job done. Easy when summarized like that, but lets dig in.
First consider what systems you want your skills to be applicable for.
Do you need tools that work on many random Linux machines that you have little control over? Then go with the lowest common denominator - bash, and various command line tools (sed,awk,grep) included with every system, and get good with the subset of command line options common on all of them - most likely limited by the oldest system you need to work with. (There are still Windows XP and Redhat 4 systems out in the wild, if you're unlucky enough to have to work with them.)
Do you need to work with OS X at all? I never learned to use Apple's outdated versions of programs, instead I heavily customized my laptop to have compatible versions of things but this only works because there's 1 os x machine I ever deal with.
Then it's about the right tool for the right job. Do you want to process text? Awk will take you a long way, but ultimately, Perl is your friend. Do you want to want more structured programming type things (aka objects/classes)? Then Python is your friend. There's a certain mindset that thinks that if everything is in one language things are better, but that's a trap. With enough work, you can do the same thing in any language, but each languages is better than others at some specific thing. (working legacy code is that something that a language can be better at than others.)
These days, it's more important to learn what tools are available and how to use them, but because you can just google 'awk print second to last column' and plug that into your script, and continue working, there's less of a need to truely grok awk's language (for example). (I mean, spend the time to learn it once so it will come back to you the next time you need to do something more custom with it)
For a lot of tasks, posix-compliant Bash scripts are more than adequate. Use Perl, Python, or Ruby (your choice) if it becomes more complex (especially with state). It’s worth considering ones that are installed by default on most linux distros.
There’s no reason to chase X script/lang of the month. Bash etc are extremely well documented and there’s a very good chance someone already asked how to do something similar to what you’re doing on stackoverflow, etc.
A book "Minimal Perl" used to be referred to often in these discussions but I never hear about it any more. It was teaching these kind of tricks for command line magic.
Still a good exercise for me to write it, and I assume for OP too.