GNU Parallel中的引用是一门黑色艺术。手册中有一整节专门介绍它:
http://www.gnu.org/software/parallel/man.html#QUOTING
结论:
为了避免处理引用问题,编写一个小脚本或函数(记住导出-f函数)并使用GNU可能会更容易
平行的
称之为。
在这种情况下,我将编写一个函数:
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