Dunno about that: awk takes a bit of getting used to because its a specialised tool for extracting data from text files: I suggested using it in this case because its brilliant for tasks like scanning log files for a set of error messages and doing appropriate stuff for each one it spots. As you've seen, the code needed to recognise 'battery low' warnings in, say, /var/log/messages and issue a 'shutdown -h now' command if one is found would be a trivially small program because it automatically reads lines and splits them into words before using a regex to trigger actions on any lines that the regex matches: about all you need to write is the regexes and the code that each of them triggers.
By comparison C, Java, Perl or Python, ... are all general purpose programming languages and so you need to code the file reading loop and (probably) the scan routine that recognises interesting lines in the file as well as the code to do something useful when a line is recognised.
IOW, to spot a 'battery low' message in the /var/log/messages logfile and issue a STOP command the Raspbian would be a one liner in awk:
awk -- '/battery low/ { system("shutdown -h now") }' /var/log/messages
as compared with at least 10-20 lines in any of the other languages I mentioned - and they'll take longer to write simply because the loop and the line parser will need to be coded and debugged.
The above, of course, is assuming that you don't want to simply build the shutdown command into the program that's watching battery voltage
A lot of programmers would do it that way while others, of which I'm one, like to keep different activities in single purpose programs - and, though its unlikely in this particular case, would keep them separate because you might someday need to let another program trigger the boojum as well as the one you're designing right now.
Dunno. These days I bet more people would try to write it in Python or Javascript than would use Perl.
-- Martin | martin at Gregorie | gregorie dot org