Re: more splitting

Ray Andrews <[email protected]> Fri, 17 Apr 2026 10:11:04 -0700
Newsgroups gmane.comp.shells.zsh.devel,gmane.comp.shells.zsh.user
Message-ID <[email protected]>
On 2026-04-17 09:25, Mark J. Reed wrote:
> ... You do have the option of keeping the delimiters around, but they 
> show up as separate elements in between the others in the result 
> array. That's mostly useful when you have a selection of possible 
> delimiters and need to know which one you got at each position; less 
> so when you know that there had to have been a newline there because 
> it was the only thing you were splitting on.
Yeah, there could be different ways of doing it.  As I said, the 
essential thing is that I finally 99% understand what's going on and I 
can cope with it.  I haven't had a problem I couldn't deal with yet, 
it's just been so hard to figure out what's going on. Zsh does not lend 
itself to self-study, one must be informed of these deep things.
> Zsh's slightly-older sister Bash has a built-in function called 
> *readarray *that splits input on a delimiter and puts the resulting 
> strings into an array; it is unusual in that it does keep the 
> delimiter around by default at the end of each element.
That's about exactly what I was  suggesting in my private msg. just 
now.  Splitting information could be preserved very easily.  But 
altering the data ... wrong on principle.

> But I very rarely see code using it that way; most of the time it's 
> called with the *-t* option to disable that behavior and leave the 
> delimiters out.
Good for piping tho? Like Philippe's:

  while read -u 0 -k 1 c; do var+=$c; done

... with a lot lest trouble.