Functions, mostly - the big `awk` command in the example goes into something like
# @param $1 whatever
chess_extract_scores() {
awk blah blah blah
}
and then your whole pipeline simplifies to cat foo | grep bar | chess_extract_scores
which is pretty readable. You can even do most of this in a live bash session with ^X ^E.