Fwd: delimiters with more than one character? ...

2020-07-16 Thread Tom Browder
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? ...

2020-07-16 Thread Parrot Raiser
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? ...

2020-07-16 Thread Marcel Timmerman

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? ...

2020-07-16 Thread William Michels via perl6-users
-- 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
>
>