I use consult-ripgrep to do the search, which shows me a live preview of the match candidates. If I want to make a buffer with all the results, I call embark-act
then embark-export
to dump the results into a buffer.
I detail this workflow (including editing the matches!) here on my blog, which should have more details if you're lost.
Tooting my own horn here—you might like looking at my starter kit "Bedrock" which is a minimal set of defaults to make Emacs not look so dumpy. :) Take from it what you'd like.