I agree that it would be nice to cache a command's output, so we can iterate processes on it. I'm a heavy user of Emacs, which is based around "buffers", so should naturally support such a workflow; yet in the decade I've been using it, such a workflow hasn't really occurred to me.
Emacs makes it easy to run commands, e.g. with M-&; the output goes into a buffer called `Async Shell Command`. Unfortunately, that buffer gets replaced each time we run a command. It's common to override this behaviour (as I do), so a new buffer gets spawned each time, which gets a bit closer to that workflow. Still, I've never really used this to chain commands together; this post has inspired me to try that a bit more :)
This is how I use NeoVim's terminal: run a command, visually select the lines I want to operate on and yank them, then paste them in a new buffer. After that, it's a matter of transforming the text via whatever means one normally does (macros, text objects, search/replace, etc.)
Manipulating text within the editor is pretty common; e.g. I use shell-mode in Emacs, which is mostly just a normal text buffer (except Return acts differently when the cursor is over the commandline!); eshell is similar.
What I was describing above is manipulating such buffers with external commands (similar to Emacs `shell-command-on-region`)
Emacs makes it easy to run commands, e.g. with M-&; the output goes into a buffer called `Async Shell Command`. Unfortunately, that buffer gets replaced each time we run a command. It's common to override this behaviour (as I do), so a new buffer gets spawned each time, which gets a bit closer to that workflow. Still, I've never really used this to chain commands together; this post has inspired me to try that a bit more :)