尝试以下方法使用 bioawk 替换没有键值对的 fasta 标头
for infile in $(ls *.faa)
do
prefix=$(basename $infile .faa)
bioawk -c fastx '{ print ">"$prefix"_" ++i "\n"$seq }' < ${infile} > ${prefix}_hdrrn.faa
done
基本上,我想替换我的
中的标题物种名称.faa
到
>species_name_1, >species_name_2....>species_name_n
问题是
$prefix
里面的bioawk print
不起作用。我得到的错误是,
bioawk:非法字段$(),名称“前缀”输入记录号1,文件 源代码行号 1
为什么替代没有发生?
我猜测
$seq
应该是当前输入行的内容,即 $0
如果是这样那么你可能应该使用:
#!/usr/bin/env bash
outdir='/some/where'
mkdir -p "$outdir" || exit 1
for infile in *.faa
do
prefix=""${infile%.*}"
bioawk -c fastx -v pfx="$prefix" '{ print ">" pfx "_" NR ORS $0 }' < "$infile" > "${outdir}/${prefix}_hdrrn.faa"
done
请注意,我正在其他目录中创建输出文件,因此它们的名称不会与您的输入文件名冲突。