cat is capable of endless discussion.
cat thing | cat otherthing doesn't do what (some) people think.
cat thing | cat otherthing /dev/stdin does, but there's an ordering
point to be made.
cat thing | cat < otherthing /dev/stdin makes the ordering point. and
the number of lines seen.
the role of the shell in marshalling the IO and determining what is
opened, when, truncated is another pitfall that seems to escape
people. "I thought the commands ran left to right" when your first
command < something and your final command > something
like others, my use of cat is reflexive. I know perfectly well I could
solve the whole problem in awk or sed, I still construct sequences to
use sed to edit the lines, and awk to extract the fields in LSWP
denoted counts. we're speaking english and say "comme ci comme ca" and
nobody blinks, it's the same in shell. codeswitching!