2015-02-11 2 views
2

Я новичок в использовании командной строки Bash и должен знать правильный синтаксис для одиночных кавычек в существующих одинарных кавычках.Одиночные кавычки в одиночных кавычках - командная строка Bash GNU parallel

ls *file.fa | parallel -j4 'perl -pe 's/^>/>{}/' {} >newfile_{}' 

Я знаю, что параллельная команда GNU не особенно хорошо известна или используется, но я не думаю, что синтаксис будет отличаться для различных команд, которая требует одинарных кавычек внутри одинарных кавычек. Команда состоит в том, чтобы изменить> на> file.fa (> затем имя файла) в файле file.fa, ​​где {} включает файл, переданный из раздела ls * file.fa.

Любая помощь очень ценится

+0

попробовать ' 'Perl -pe "s/^> /> {} /"{}> NewFile _ {}'' –

+0

возможно дубликат [Использование одинарные с эхо в Баш] (HTTP : //stackoverflow.com/questions/25608503/using-single-quotes-with-echo-in-b зола) – Biffen

+5

Одиночные кавычки не гнездятся. Одиночные кавычки, которые запускают вашу команду 'sed', фактически закрывают строку, начинающуюся с' 'perl' и т. Д. Либо кавычки подкачки, как @AvinashRaj, предложили или использовали' '\ ''', чтобы «избежать» внутренних одинарных кавычек. –

ответ

2

Цитирование в GNU Parallel черный арт. Существует целый раздел, посвященный ей в руководстве: http://www.gnu.org/software/parallel/man.html#QUOTING

Заключение: Чтобы избежать иметь дело с проблемами котирования может быть проще просто написать небольшой скрипт или функцию (не забудьте экспортировать -f функция) и имеют GNU parallel назовите это.

В этом случае я бы написать функцию: имена файлов

fasta_namer() { 
    NAME=$1 
    perl -pe "s/^>/>$NAME/" "$NAME" >newfile_"$NAME" 
} 
export -t fasta_namer 
ls *file.fa | parallel -j4 fasta_namer {} 

FASTA, как правило, не странно, но если они есть (например, содержащие ' "\ * &/или другие сумасшедшие символов), то это может решить:

fasta_namer() { 
    NAME=$1 
    PERLQUOTED=$2 
    NEWNAME=$3 
    perl -pe "s/^>/>$PERLQUOTED/" "$NAME" >"$NEWNAME" 
} 
export -t fasta_namer 
ls *file.fa | parallel -j4 fasta_namer {} '{=$_=quotemeta($_)=}' {.}.new.fa 
Смежные вопросы