On Thu, Jul 16, 2020 at 07:56:57AM -0400, Greg Wooledge wrote:
> On Thu, Jul 16, 2020 at 01:30:02PM +0200, Thomas Schmitt wrote:
> > Hi,
> > 
> > Eric S Fraga wrote:
> > > echo " 34 + 45 \| abc \| 1 2 3 \| c\|123abc " | sed -e 's/\\|/\n/g'
> > 
> > I came that far too. One can wrap the result in quotation marks by adding
> >   | sed -e 's/^.*$/"&"/'
> > 
> > But how to get the lines into the array ?
> 
> First, do not add quotation marks to it.  They just get in the way.
> 
> If you've got an input stream with one element per line that you want
> to import into a bash array, you use the "mapfile" (or "readarray")
> command.
> 
> mapfile -t myarray < <(blah | sed)
> 
> If it's a NUL-delimited stream, and you're in bash 4.4 or higher, you
> can use mapfile -d '' myarray < <(...) instead.
> 
> If it's a NUL-delimited stream but you're in bash 4.3 or older, then
> you have to use a loop.
> 
> myarray=()
> while IFS= read -r -d '' i; do
>   myarray+=("$i")
> done < <(...)


-This- goes straight into my cheatsheet!

TYVM,

Reply via email to