There's really nothing useless about that use of cat: it makes the pipeline compose better from left to right. It's not like you have to pay 25 cents for each process you spawn.
So does the pipeline above.
It's not detrimental to performance since an empty cat is a no-op in a pipeline. You can have any number of them. But commands should be written for humans to understand, and inserting no-ops is a distraction to the reader.
In the trivial example, "grep needle haystack" reads better than "cat haystack | grep needle".
Re:Awk in 20 Minutes (2015)
by j_z_reeves on Saturday May 02, 2020 @12:36PM
(#23052863)
yes that would also work! I forgot about the `-c` argument for uniq.
grep ERROR logfile | cut -f 1 -d ' ' | sort | uniq -c