I just happened to need to do a lot of word counts today so I put together a service to make my life easier. While, I performed my initial work on Mojave but the same approach works all the way to Big Sur and, presumably, the upcoming macOS Malibu Barbie.
Open Automator
To get started, launch automator and create a new document.
Select Quick Action, Choose from the new document dialog:
Add Scripting
Drop in a Run Shell Script and then an Apple Script. You can search from them in the top-left corner. Drag them in order into the right panel.
I used /bin/bash for my shell script, shocking, I know, as I am well known for my love of all things csh. Feel free to use whatever shell suits you. The first non-argument shell variable ($1
here) corresponds to highlighted text, which can be used by the system contextual menu:
echo `echo $1 | wc -w` words. `echo $1 | wc -c` characters.
Switch the pop-up for piping output (“passing input”) from “to stdin” to “as arguments”. This allows the AppleScript to read the selected data and present a dialog. If you forget, you’ll get empty input and something like “1 words, 0 characters” all the time.
on run {input, parameters} display dialog input as string buttons {"OK"} end run
Save and Run
Save the action. I called mine “Word Count”.
The action automatically saves to ~/Library/Services, in case you want to find or delete it in the future.
% ls Word Count.workflow/
Your new quick action automatically adds a custom service to your contextual pop-ups. Just highlight anything you want to count, from text on a web page to your work in a document and open the contextual menu:
Make sure the output looks reasonable. For easiest testing, copy the text to your clipboard and then use wc
directly in terminal.
And, then boom, you are done.
Let me know if this was helpful.