On Sat, Mar 11, 2017 at 12:14 AM, Ole Tange <[email protected]> wrote:

> So far the --rpl strings are fixed. There is no way to "pass an
> argument". I have changed that:
>
>   parallel --rpl '{%(.*?)} s/$$1//' echo {%.tar.gz} ::: my.tar.gz
>
> To ask for an argument you put '(regexp)' in the replacement string,
> and you access them using $$1 $$2 ...
>
> This can also take multiple arguments:
:
> But those are pretty stupid examples. Can you find a use where
> multiple arguments would make sense?

More inspiration from Bash:

unset a
echo ${a:-myval}
parallel --rpl '{:-(.+)} $_ ||= $$1' echo {:-myval} ::: "$a"

a=abcAaAdef
echo ${a:2}
parallel --rpl '{:(\d+)} substr($_,0,$$1) = ""' echo {:2} ::: "$a"

echo ${a:2:3}
parallel --rpl '{:(\d+?):(\d+?)} $_ = substr($_,$$1,$$2);' echo {:2:3} ::: "$a"

echo ${#a}
parallel --rpl '{#} $_ = length $_;' echo {#} ::: "$a"

echo ${a#bc}
parallel --rpl '{#(.+?)} s/^$$1//;' echo {#bc} ::: "$a"
echo ${a#abc}
parallel --rpl '{#(.+?)} s/^$$1//;' echo {#abc} ::: "$a"

echo ${a%de}
parallel --rpl '{%(.+?)} s/$$1$//;' echo {%de} ::: "$a"
echo ${a%def}
parallel --rpl '{%(.+?)} s/$$1$//;' echo {%def} ::: "$a"

echo ${a/def/ghi}
parallel --rpl '{/(.+?)/(.+?)} s/$$1/$$2/;' echo {/def/ghi} ::: "$a"

echo ${a^a}
parallel --rpl '{^(.+?)} s/($$1)/uc($1)/e;' echo {^a} ::: "$a"
echo ${a^^a}
parallel --rpl '{^^(.+?)} s/($$1)/uc($1)/eg;' echo {^^a} ::: "$a"

a=AbcAaAdef
echo ${a,A}
parallel --rpl '{,(.+?)} s/($$1)/lc($1)/e;' echo '{,A}' ::: "$a"
echo ${a,,A}
parallel --rpl '{,,(.+?)} s/($$1)/lc($1)/eg;' echo '{,,A}' ::: "$a"


/Ole

Reply via email to