Если я вас правильно понял, все, что вы ищете, это {1/}
вместо {1}
. Это «базовое имя» аргумента. См. man parallel _tutorial и обсуждение --rpl
, где мы видим, что строки замены реализованы как
--rpl '{/} s:.*/::'
и Строки позиционной замены также можно изменить с помощью/
и т. д. Так что {1/}
похоже на удаление всех символов до финального /
.
Вы можете создать свои собственные сокращенные строки замены, используя --rpl
, за которой следует строка, начинающаяся с тега ({/}
в приведенном выше примере ), а затем выражение Perl, такое как приведенная выше команда замены(s:
образец:
замена:
).
Я не уверен, что разрешено использовать в качестве тегов, но мы можем использовать учебный пример {..}
для позиционного тега, т.е. его можно использовать с{
числом}
. Perl-выражение для удаления всего до последнего /
, за которым следует слово «Образец _», будет :s:.*/Sample_::
, поэтому вам нужно добавить перед --xapply
аргументы
--rpl '{..} s:.*/Sample_::'
, а затем используйте --id={1..}
, чтобы применить эту замену к arg 1. Если, например, вы хотите удалить слово до первого подчеркивания _
, а не фиксированное слово Sample
, вы можете использовать такой шаблон, как
--rpl '{..} s:.*/[^_]*_::'
Последняя команда должна выглядеть примерно так:
parallel -j $NSLOTS --rpl '{..} s:.*/Sample_::' --xapply \
" echo {1} \
/home/rob2056/software/cellranger-2.2.0/cellranger count --id={1/} \
--id2={1..} \
--transcriptome=$ref_data \
--fastqs={1} \
" ::: $TMPDIR/FASTQ/Sample*
Я использую следующую команду apt -get со следующими параметрами в сценариях, чтобы указать apt и dpkg не запрашивать подтверждение и другие параметры, здесь это тоже должно работать:
DEBIAN_FRONTEND=noninteractive apt-get -y -o "Dpkg::Options::=--force-confdef" -o "Dpkg::Options::=--force-confold" install <package>