Fwd: delimiters with more than one character? ...
An opportunity for Raku golfers to show off Raku on the Debian users list. Best regards, -Tom -- Forwarded message - From: Albretch Mueller Date: Tue, Jul 14, 2020 at 07:52 Subject: delimiters with more than one character? ... To: Debian Users ML I have a string delimited by two characters: "\|" _S=" 34 + 45 \| abc \| 1 2 3 \| c\|123abc " which then I need to turn into a array looking like: _S_AR=( " 34 + 45 " " abc " " 1 2 3 " " c" "123abc " ) I can't make awk or tr work in the way I need and all examples I have found use only one character. Is it possible to do such things in bash? lbrtchx
Re: delimiters with more than one character? ...
Perhaps with a grammar? On 7/16/20, Tom Browder wrote: > An opportunity for Raku golfers to show off Raku on the Debian users list. > > Best regards, > > -Tom > > -- Forwarded message - > From: Albretch Mueller > Date: Tue, Jul 14, 2020 at 07:52 > Subject: delimiters with more than one character? ... > To: Debian Users ML > > > I have a string delimited by two characters: "\|" > > _S=" 34 + 45 \| abc \| 1 2 3 \| c\|123abc " > > which then I need to turn into a array looking like: > > _S_AR=( > " 34 + 45 " > " abc " > " 1 2 3 " > " c" > "123abc " > ) > > I can't make awk or tr work in the way I need and all examples I > have found use only one character. > > Is it possible to do such things in bash? > > lbrtchx >
Re: delimiters with more than one character? ...
On 2020-07-16 15:17, Parrot Raiser wrote: Perhaps with a grammar? On 7/16/20, Tom Browder wrote: An opportunity for Raku golfers to show off Raku on the Debian users list. Best regards, -Tom -- Forwarded message - From: Albretch Mueller Date: Tue, Jul 14, 2020 at 07:52 Subject: delimiters with more than one character? ... To: Debian Users ML I have a string delimited by two characters: "\|" _S=" 34 + 45 \| abc \| 1 2 3 \| c\|123abc " which then I need to turn into a array looking like: _S_AR=( " 34 + 45" " abc" " 1 2 3" " c" "123abc" ) I can't make awk or tr work in the way I need and all examples I have found use only one character. Is it possible to do such things in bash? lbrtchx A single quoted string: ' 34 + 45 \| abc \| 1 2 3 \| c\|123abc '.split('\|').join(', '); returns: 34 + 45 , abc , 1 2 3 , c, 123abc A double quoted string interprets '\' so; " 34 + 45 \| abc \| 1 2 3 \| c\|123abc ".split('|').join(', ') returns: 34 + 45 , abc , 1 2 3 , c, 123abc spaces are still left in. The join is used to show the strings in the array a bit better. Regards, Marcel
Re: delimiters with more than one character? ...
-- Forwarded message - Date: Thu, Jul 16, 2020 at 11:42 AM Subject: Re: delimiters with more than one character? To: I've slowly been learning the Raku programming language (AKA Perl6), and while I'm far from being an expert, this is the first solution I came up with (raku one-or-two-liners, at the bash command prompt): user@mbook:~$ raku -e ' my Str $s=" 34 + 45 \| abc \| 1 2 3 \| c\|123abc "; $s.put'; 34 + 45 | abc | 1 2 3 | c|123abc user@mbook:~$ raku -e ' my Str $s=" 34 + 45 \| abc \| 1 2 3 \| c\|123abc "; $s.split("|").raku.put'; (" 34 + 45 ", " abc ", " 1 2 3 ", " c", "123abc ").Seq user@mbook:~$ raku -e ' my Str $s=" 34 + 45 \| abc \| 1 2 3 \| c\|123abc "; .put for $s.split("|");' 34 + 45 abc 1 2 3 c 123abc user@mbook:~$ raku -e ' my Str $s=" 34 + 45 \| abc \| 1 2 3 \| c\|123abc "; .raku.put for $s.split("|");' " 34 + 45 " " abc " " 1 2 3 " " c" "123abc " user@mbook:~$ Looking at the Str typed-variable $s I see that backslash escapes are removed automatically (the second command only has to split on the pipe character). So maybe this isn't a general solution, but it works for the example given. https://raku.org/ HTH, Bill. On Thu, Jul 16, 2020 at 5:35 AM Tom Browder wrote: > An opportunity for Raku golfers to show off Raku on the Debian users list. > > Best regards, > > -Tom > > -- Forwarded message - > From: Albretch Mueller > Date: Tue, Jul 14, 2020 at 07:52 > Subject: delimiters with more than one character? ... > To: Debian Users ML > > > I have a string delimited by two characters: "\|" > > _S=" 34 + 45 \| abc \| 1 2 3 \| c\|123abc " > > which then I need to turn into a array looking like: > > _S_AR=( > " 34 + 45 " > " abc " > " 1 2 3 " > " c" > "123abc " > ) > > I can't make awk or tr work in the way I need and all examples I > have found use only one character. > > Is it possible to do such things in bash? > > lbrtchx > >