gpt4 book ai didi

regex - 单引号内的单引号问题 - Bash 命令行 GNU 并行

转载 作者:行者123 更新时间:2023-11-29 09:47:30 26 4
gpt4 key购买 nike

我是 Bash 命令行使用的新手,需要知道在现有单引号内使用单引号的正确语法。

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

我知道 GNU 并行命令不是特别广为人知或使用,但我认为对于需要单引号内的单引号的不同命令,语法不会有所不同。该命令是在名为 file.fa 的文件中将 > 更改为 >file.fa(> 然后是文件名),其中 {} 包含从 ls *file.fa 部分通过管道传输的文件。

非常感谢任何帮助

最佳答案

在 GNU Parallel 中引用是一种魔法。手册中有一整节专门介绍它:http://www.gnu.org/software/parallel/man.html#QUOTING

Conclusion: To avoid dealing with the quoting problems it may be easier just to write a small script or a function (remember to export -f the function) and have GNU parallel call that.

在这种情况下,我会编写一个函数:

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

关于regex - 单引号内的单引号问题 - Bash 命令行 GNU 并行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28458437/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com