On Wed, Oct 5, 2016 at 4:21 PM, Geoffrey Cleaves <[email protected]> wrote:
> Hi all. Is there a replacement string similar to {//} which keeps only the
> extension? I know it's possible to define a custom replacement pattern but
> I'm running into difficulties since I have so many nested shells and my
> matching parenthesis aren't being recognised.

>From man parallel:

       --plus   Activate additional replacement strings: {+/}
               {+.} {+..} {+...} {..} {...} {/..} {/...}
               {##}. The idea being that '{+foo}' matches
               the opposite of '{foo}' and {} = {+/}/{/} =
               {.}.{+.} = {+/}/{/.}.{+.} = {..}.{+..} =
               {+/}/{/..}.{+..} = {...}.{+...} =
               {+/}/{/...}.{+...}

               {##} is the number of jobs to be run. It is
               incompatible with -X/-m/--xargs.

So:

    parallel --plus echo {+.} ::: name.extension

should print extension.

If you have a problem with quoting, consider putting a --rpl statement
in your ~/.parallel/config. E.g:

--rpl '{0#} $f = "%0".int(1+log(total_jobs())/log(10))."d";
$_=sprintf($f,$job->seq())'

to have {0#} be a 0-padded job-number.


/Ole

Reply via email to